我可以交叉编译任何C / C ++应用程序,静态链接它的Linux库并在android上运行它。那么需要一个Android-ndk呢?Android-ndk将我们限制为bionic有一小部分gnu libc。直接交叉编译应用程序并通过Android shell运行它们不是一个更好的主意吗?交叉编译是否有任何限制,我看不到?这个网址:Can Linux apps be run in Android?在某种程度上回答了我的问题,但最终让我感到困惑和不清楚。
答案 0 :(得分:1)
我认为这对Android-NDK
来说已经足够了Android NDK是Android SDK的配套工具,可让您使用本机代码构建应用的性能关键部分。 它提供了标头和库,允许您在使用C或C ++编程时构建活动,处理用户输入,使用硬件传感器,访问应用程序资源等。如果您编写本机代码,您的应用程序是仍然打包成.apk文件,它们仍然在设备上的虚拟机内运行。基本的Android应用程序模型不会改变。
NDK提供:
用于生成本机代码库的一组工具和构建文件 来自C和C ++来源
一种将相应的本机库嵌入到应用程序中的方法 可以在Android设备上部署的包文件(.apk)
将支持一组本机系统标头和库 在所有未来版本的Android平台中,从Android开始 1.5。使用本机活动的应用程序必须在Android 2.3或更高版本上运行。
你在arm toolchain的其他交叉编译中找不到这个东西..
答案 1 :(得分:0)
正如链接http://developer.android.com/sdk/ndk/index.html中所提到的,NDK是App开发人员的伙伴,可以创建性能敏感的本机代码。 NDK公开了一些在普通Linux环境中找不到的Android本机实现。其中一些包括Android / Bitmap,Android / nativeWindow等。使用这些Android原生应用可以加速CPU密集型流程,如图像压缩或解压缩。
即使外部交叉编译的可执行文件可能在Android中运行,也无法保证标准库实现的版本是相同的。 NDK提供了一个更容易和Android兼容的工具链和其他资源,使用它比应用程序开发人员更容易为其用例找到兼容的交叉编译器。