将基于C的Linux应用程序移植到Android平台

时间:2015-12-17 06:07:27

标签: android android-ndk

我有基于C Linux的应用程序,现在我想把它移植到Android。 我想通了,我可以从Android NDK中提取工具链并构建我的应用程序,但如何制作APK使我可以在Android设备上安装它而无需root访问权限。

在Linux中,我曾经使用bash脚本安装它,用于将我的应用程序相关文件放在不同的文件夹中,如/opt/etc(与其他应用程序共享的文件)和{{1} }。我们如何在Android中处理此问题。在Android中是否有类似于/var的文件夹,我可以放置其他应用程序可以读取的文件。

感谢
-M

1 个答案:

答案 0 :(得分:0)

首先,如果您的项目使用NDK独立工具链“按原样”编译,那么您很幸运。通常, bionic 是不够的,人们需要调整构建环境(从libpthread到完整的buildroot备用工具链和静态C运行时。)

对于共享文件位置,在Android上它名为"external storage"。您的应用和其他应用可能需要特殊的权限才能写入和读取此位置。此处不存在目录/opt。您没有/etc的写入权限,但/etc/hosts等文件可供阅读。

关于APK。你是对的,这是在Android上分发和安装应用程序的最终方式。但是,即使没有root,您也可以在本地安装和运行命令行可执行文件。通常在开启开发人员选项的情况下完成,并启用USB调试。现在您可以打开 adb shell ,安装并运行您的程序。诀窍是外部存储(见上文)被标记为“不可执行”。因此,您必须为二进制文件找到另一个位置。通常,/data/local/tmp将是一个不错的选择。

您可以在设备上使用终端模拟器,而不是 adb

如果您选择构建APK,您可能更愿意将应用程序转换为将通过JNI执行Java操作的共享库。但也可以将命令行二进制文件打包为APK的一部分并使用Java Runtime.exec()