Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android NDK项目中包含二进制文件?_Android_C++_Android Ndk_Java Native Interface_Adb - Fatal编程技术网

如何在Android NDK项目中包含二进制文件?

如何在Android NDK项目中包含二进制文件?,android,c++,android-ndk,java-native-interface,adb,Android,C++,Android Ndk,Java Native Interface,Adb,我知道它的坏习惯,但是在androidndk项目中包含二进制文件的最佳方式是什么?该文件应可通过系统命令执行 我不想手动将其复制到设备,而是将其分发到我的.apk中。将可执行文件重命名为“lib\u myexecutable\uu.so”就足够了并将其放入项目根目录下的libs/armeabi文件夹中:此文件将由设备上的包管理器提取到/data/data/your.Package.full.name/lib,并具有可执行权限 如果使用ndk build生成myexecutable,所有/libs

我知道它的坏习惯,但是在androidndk项目中包含二进制文件的最佳方式是什么?该文件应可通过系统命令执行


我不想手动将其复制到设备,而是将其分发到我的.apk中。

将可执行文件重命名为
“lib\u myexecutable\uu.so”就足够了
并将其放入项目根目录下的
libs/armeabi
文件夹中:此文件将由设备上的包管理器提取到
/data/data/your.Package.full.name/lib,并具有可执行权限

如果使用
ndk build
生成
myexecutable
,所有
/libs/$(TARGET\u ARCH\u ABI)
目录都将刷新

要自动执行重命名操作,请在您的
Android.mk
中使用以下命令:

... # whatever you have to define the executable
include $(BUILD_EXECUTABLE)
# immediately after this,
all: .libs/$(TARGET_ARCH_ABI)/lib_myexecutable_.so

.libs/$(TARGET_ARCH_ABI)/lib_myexecutable_.so: $(LOCAL_INSTALLED)
<tab>$(call host-mv, $<, $@)
…#您必须定义可执行文件的任何内容
包括$(构建可执行文件)
#紧接着,,
全部:.libs/$(TARGET\u ARCH\u ABI)/lib\u myexecutable\uz
.libs/$(TARGET\u ARCH\u ABI)/lib\u myexecutable\uSO:$(本地安装)

$(调用host mv,$将可执行文件复制到res/raw,作为构建过程的一部分。可以从应用程序访问其中的资源,并且可以使用.apkrunning系统(命令)或popen(命令)进行复制。有什么想法吗?根据您的建议进行编译可以删除“lib_myexecutable_u2;.so”。有什么建议我做错了什么吗?如果
myexecutable
是由
ndk build
生成的,就会发生这种情况。在这种情况下,您可以自动执行此过程,请参阅更新。