Android 开发手记之NDK 编程实例(6)

有了上面的基础,我们就可以用 NDK 来进行项目开发了。

我们经常会遇到这样的问题,就是将一些现有的,成熟的 C 库移植到 Android 平台上。通过上面我们的介绍,我们已经知道,我们需要用 JNI 来对现有的 C 库包装一下,然后提供 Java 接口,供上层调用。

首先的问题,就是 C 库的编译和测试。其实 Android 底层用的是 Linux 的内核,所以,和其他 Linux 程序开发一样,无法使进行交叉编译。不过, Android 有些特殊的地方,我们需要注意。下面就以一个很简单的例子,讲讲如何应用 NDK ,做一个 C 的应用终端测试程序。

首先,创建 study-hadr/study-hard.c 文件,程序非常简单,就是 Hello World 的 c 程序。

#include <string.h>

#include <stdio.h>

static char s_string[] = "Study hard!";

int main()

{

printf("%s\n", s_string);

return 0;

}
 

别看程序很简单,不过这个程序的编译可不简单。

若是在 Linux 下,只需要执行:

gcc –o study-hard study-hard.c  就可以生成应用程序 study-hard 了。

在 Android 下就不是这么简单了。在 Window 环境开发环境下,用到的交叉工具链,目录是 \android-ndk-r4\build\prebuilt\windows\arm-eabi-4.4.0 。 在这个目录的 bin 路径下,你会看到 arm-eabi 为前缀的诸多工具,这些就是 Android 用的编译工具。那么 c 库和 c 头文件又在哪里呢?对于 Android ,不同的 Platform ,有不同的库和头文件,需要我们自己选择。比如,现在我们要用 Platform5 ,那么

C 头文件的路径为:

\android-ndk-r4\build\platforms\android-5\arch-arm\usr\include

C 库的路径为:

\android-ndk-r4\build\platforms\android-5\arch-arm\usr\lib

好了,我们知道了 C 的编译工具链,知道了 C 库路径和 C 头文件路径,应该可以编译了。写个简单的 Makefile ,试一下,结果出错了。 crt0.o 没有找到。

Android 开发手记之NDK 编程实例

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxfxs.html