Android的NDK开发(1)-不一样的HelloWorld
通过之前的两篇文章,我们已经对JNI技术有了一个了解-能够让java与其他的语言进行交互。
android的应用同样也是用java开发,所以也可以使用JNI技术来进行其他语言的调用,比如C\C++,大名顶顶的cocos2d-x就是用C来做开发语言的。
为什么要在Android中使用C\C++?
1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。
3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。
Android的NDK提供了一些交叉编译工具链和Android自带的库,这些Android的库可以让开发者在编写本地语言的程序时调用。而NDK提供的交叉编译工具链就对已经编写好的C&C++代码进行编译,生成库。
当然了,也可以自己搭建交叉编译环境,而不用NDK的工具和库。然后生成库,只要规范操作,一样可以生成能让JAVA层成功调用的库文件的,不过这个属于高端玩家了,NDK还是比较容易上手一些。
注:交叉编译器(英语:Cross compiler)是指一个在某个系统平台下可以产生另一个系统平台可执行文件的编译器。交叉编译器在目标系统平台(开发出来的应用程序所运行的平台)难以或不容易编译时非常有用。
下面用两种方式在NDK下实现HelloWorld。(确保已配置好NDK)
1、先编写C库,再创建项目
1)创建库
新建一个目录,命名为HelloWorld,然后在里面新建一个名为jni的目录(名称一定要是jni,因为ndk-build的时候会在HelloWorld目录下寻找jni的目录,然后进行build),在jni目录下新建如下文件HelloWorld.c和Android.mk。
编译成功后,会在在目录生成libs和obj两个文件夹,libs里面有刚刚编译成的libHelloWorld.so库则相应的可运行在arm平台上的HelloWorld库编译成功了.
2)创建Android项目
打开Eclipse创建一个Android项目,将刚才生成的armeabi文件夹拷贝到项目下libs文件夹内。
项目结构如下:
主Activity代码如下:
2、先创建项目,再写native实现
1)创建工程在Eclipse中创建一个Android工程,主Activity内容如下(基本没变):
两种方法大同小异,开发的时候应当灵活的选择。
参考:
Android的NDK开发(2)-利用Android NDK编写一个简单的HelloWorld-http://blog.csdn.net/conowen/article/details/7522667
Android NDK开发入门实例-http://blog.csdn.net/redoffice/article/details/6654714