3

我可以交叉编译任何 C/C++ 应用程序,静态链接它 Linux 库并在 android 上运行它。那么 Android-ndk 需要什么?Android-ndk 将我们限制为具有 gnu libc.Isn 的小子集的仿生直接交叉编译应用程序并通过 Android shell 运行它们不是更好的主意吗?交叉编译有什么我看不到的限制吗?这个网址:Linux 应用程序可以在 Android 中运行吗?在某种程度上回答了我的问题,但最终让我感到困惑和不清楚。

4

2 回答 2

1

我认为这对Android-NDK来说已经足够了

Android NDK 是 Android SDK 的配套工具,可让您在本机代码中构建应用程序的性能关键部分。它提供了头文件和库,允许您在使用 C 或 C++ 编程时构建活动、处理用户输入、使用硬件传感器、访问应用程序资源等。如果您编写本机代码,您的应用程序仍会打包到 .apk 文件中,并且它们仍会在设备上的虚拟机内运行。基本的 Android 应用程序模型不会改变。

NDK 提供:

  • 一组用于从 C 和 C++ 源代码生成本机代码库的工具和构建文件

  • 一种将相应的原生库嵌入到可部署在 Android 设备上的应用程序包文件 (.apk) 中的方法

  • 从 Android 1.5 开始,Android 平台的所有未来版本都将支持一组原生系统头文件和库。使用本机活动的应用程序必须在 Android 2.3 或更高版本上运行。

这个东西你在使用 arm 工具链的其他交叉编译中找不到..

于 2012-04-09T09:36:17.107 回答
0

如链接http://developer.android.com/sdk/ndk/index.html中所述, NDK 是应用程序开发人员创建性能敏感的本机代码的伴侣。NDK 暴露了一些在一般 Linux 环境中找不到的 Android 原生实现。其中一些包括 Android/Bitmap、Android/nativeWindow 等。使用这些 Android 原生应用程序可以加快 CPU 密集型进程,例如图像的一些压缩或解压缩。

即使外部交叉编译的可执行文件可以在 Android 中运行,也不能保证标准库实现的版本是相同的。NDK 提供了一个更简单且与 Android 兼容的工具链和其他资源,对于应用程序开发人员来说,使用它们比为他们的用例寻找兼容的交叉编译器要容易得多。

于 2012-04-09T09:31:04.940 回答