【问题标题】:Developing native C applications android without the NDK?在没有 NDK 的情况下开发原生 C 应用程序 android?
【发布时间】:2012-08-31 19:30:14
【问题描述】:

好吧,这很奇怪:

有没有一种方法可以在不使用 Android NDK 的情况下为 Android 开发原生 C 应用程序或库?

在 NDK 发布之前发生了什么? (它出现的时间不长,我认为它是在一两年前发布的)。

【问题讨论】:

  • Root手机,为Linux编译

标签: android android-ndk


【解决方案1】:

显然,您可以——我的一个朋友是真正的 Android 大师,他设法完全手动构建了一个基于 GCC 的本机工具链。他还修复了 Android 的 libc 中一些缺失的部分。主要思想如下:GCC 内置了对 arm-elf-linux 目标的支持,因此使用适当的构建脚本,您可以将其配置为为 Android 构建。但是,您必须 root 手机才能运行生成的二进制文件。更酷的一点是,由于 GCC 是一个自托管编译器,使用 arm-linux-elf 工具链,您可以再次重新编译 GCC,并在手机本身拥有工具链。

【讨论】:

    【解决方案2】:

    在 NDK 发布之前,唯一官方支持的开发 Android 应用程序的方法是使用 Android SDK 并用 Java 编写应用程序。

    正如其他人所提到的,可以将某些应用程序交叉编译为完全独立的,并在有根手机上运行它们。这样做的缺点应该很明显:很少有人能够运行您的应用程序(他们还需要是 root,而且您将无法在 Play 商店中启动您的应用程序);你甚至可能在不同的设备上遇到兼容性问题,例如如果您依赖于针对各种库的动态链接(您可能需要这样做以减小二进制文件的大小)。

    TL;DR:这是可能的,但受到严重限制,不推荐。

    【讨论】:

      【解决方案3】:

      您可以使用与 Android 兼容的工具链(例如 CodeSourcery)编译您的 C 代码,并在非 root 手机上通过命令行(例如通过 SSH 连接,例如 SSHDroid)运行它。

      【讨论】:

        猜你喜欢
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 2015-10-03
        • 2013-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-06
        相关资源
        最近更新 更多