如何在apk中打包本机命令行应用程序?

时间:2013-06-29 18:42:06

标签: android command-line android-ndk

我想将Android原生命令行应用程序打包到apk中。我有使用jni / Android.mk的ndk-build构建的应用程序。输出位于libs / armeabi /< MyApp>中。我也有蚂蚁的apk建筑。但是,apk似乎没有拿起命令行应用程序。如果我解压缩apk,应用程序就不在那里。

我需要做些什么来让ant包含一个预先构建的命令行应用程序?

另外,我需要做什么才能让ant运行ndk-build? (已经回答:Android NDK build with ANT script

2 个答案:

答案 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并且它有效。不能说更新的机器人。 对不起,没有关于蚂蚁的建议。