【问题标题】:Porting C based linux application to the Android platform将基于 C 的 linux 应用程序移植到 Android 平台
【发布时间】:2015-12-17 06:07:26
【问题描述】:

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

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

谢谢
-M

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    首先,如果您的项目使用 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()

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多