在没有NDK的android环境下开发本机C应用程序?

在没有NDK的android环境下开发本机C应用程序?,android,android-ndk,Android,Android Ndk,好吧,这是一个奇怪的问题: 有没有一种方法可以不使用androidndk就为Android开发原生C应用程序或库 NDK发布之前发生了什么? (它在那里的时间不长,我想它是在一两年前发布的)。显然,你可以——我的一个朋友是一位真正的安卓大师,他设法完全手工构建了一个基于GCC的本机工具链。他还修复了Android的libc中缺失的部分。其主要思想如下:GCC内置了对armelf-linux目标的支持,因此通过适当的构建脚本,您可以将其配置为针对Android构建。但是,您必须在手机根目录下运行生

好吧,这是一个奇怪的问题:

有没有一种方法可以不使用androidndk就为Android开发原生C应用程序或库

NDK发布之前发生了什么?
(它在那里的时间不长,我想它是在一两年前发布的)。

显然,你可以——我的一个朋友是一位真正的安卓大师,他设法完全手工构建了一个基于GCC的本机工具链。他还修复了Android的libc中缺失的部分。其主要思想如下:GCC内置了对armelf-linux目标的支持,因此通过适当的构建脚本,您可以将其配置为针对Android构建。但是,您必须在手机根目录下运行生成的二进制文件。更酷的是,由于GCC是一个自托管编译器,使用arm linux elf工具链,您可以再次重新编译GCC,并在NDK发布之前将工具链放在手机上,官方支持的开发Android应用程序的唯一方法是使用Android SDK并用Java编写应用程序

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


TL;医生:这是可能的,但严格限制,不推荐

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

根手机,为Linux编译