我想将Android原生命令行应用程序打包到apk中。我有使用jni / Android.mk的ndk-build构建的应用程序。输出位于libs / armeabi /< MyApp>中。我也有蚂蚁的apk建筑。但是,apk似乎没有拿起命令行应用程序。如果我解压缩apk,应用程序就不在那里。
我需要做些什么来让ant包含一个预先构建的命令行应用程序?
另外,我需要做什么才能让ant运行ndk-build? (已经回答:Android NDK build with ANT script)
答案 0 :(得分:11)
请参阅Android NDK build with ANT script。
如果Ant未自aapt
自动复制,您可以使用libs/armeabi
将二进制文件添加到APK,请参阅Documentation for aapt element in Ant script。
我相信该文件将被正确提取到 /data/data/your.package.full.name/lib
,具有可执行权限。
Ant构建涉及一个名为“ApkBuilder”的步骤,该步骤仅添加来自libs/armeabi
的匹配模式^.+\.so$
或gdbserver
的文件 - 后者仅用于调试版本。 / p>
但是将可执行文件重命名为“myexecutable.so”是不够的:设备上的APK安装程序不会提取此文件。
将可执行文件重命名为“ lib myexecutable .so ”就足够了:这个文件将被提取APK安装程序设备上的程序包管理器为/data/data/your.package.full.name/lib
,具有可执行权限。
我个人喜欢给这个非实际的库提供一些特殊名称,例如: lib...ffmpeg...so
。
答案 1 :(得分:2)
通常,您应该将命令行应用程序放入Assets
文件夹,然后使用AssetManager
来提取资源(提取后不要忘记chmod
!)。但是将它解压到哪里会有问题,因为并非Android中的每个目录都可以存储可执行的二进制文件。在Android 2.2上,我尝试了/cache
并且它有效。不能说更新的机器人。
对不起,没有关于蚂蚁的建议。