我有基于 C Linux 的应用程序,现在我想将它移植到 Android。 我想通了,我可以从 Android NDK 中提取工具链并构建我的应用程序,但是如何制作 APK 以便我可以在不需要 root 访问权限的情况下将它安装在 android 设备上。
在 Linux 中,我曾经使用 bash 脚本安装它,该脚本用于将我的应用程序相关文件放在不同的文件夹中,如 /opt
、/etc
(与共享的文件其他应用程序)和 /var
。我们如何在 Android 中处理这个问题。 Android中是否有一个类似于/etc
的文件夹,我可以在其中放置其他应用程序可以读取的文件。
谢谢
-M
最佳答案
首先,如果您的项目使用 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() .
关于android - 将基于C的linux应用程序移植到Android平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34327711/