Android开发基础(2.1)--NDK 的搭建和基本用法

本文介绍了Android NDK的配置及基本使用流程,包括下载、配置支持C++的NDK版本、通过Makefile构建C/C++库并将其整合进Android项目的方法。

I.NDK配置和基本使用

   NDK简介见前篇。较新的NDK都无需配置,下载解压后即可使用。关键是不同版本的NDK开放的API不同,常用的是 r4和r5,后者面向Android 2.2+, 支持UI/图形/声音的部分C接口,还有STL的支持(遗憾的是r5中的STL没整出来)。由于我面向的平台是2.1的,所以,我用的是 r4c。

   这里就提到的关键一点了,那个NDK是真正配置好的完全支持C++(包括STL)的?网上比较有名的是Crystax NDK r4, 我用的是Mozilla 为开发Android Firefox开发而使用的NDK r4c(与Crystax类似),下载地址是:

http://ftp.mozilla.org/pub/mozilla.org/mobile/source/android-ndk-r4c-0moz3.tar.bz2

具体如何修改自己的NDK我后面再说。

1.NDK的基本使用

   这里说的基本使用,就是利用现有的NDK工具生成供SDK JAVA通过JNI调用的共享C库(lib**.so)

   以上篇的工程Helloworld为例,在工程文件夹下:

#mkdir jni

#cd jni

至少要创建Android.mk和helloworld.c,例如:

Android.mk


这是个NDK要使用的小型Makefile,更多的选项可以看 $NDK/docs/* 内的相关文档。

helloworld.c 遵从一般JNI代码的规定:


  注意C++代码里面要加上 extern "C",防止C++的名称修饰使得JNI无法找到函数名。命名规则就是:Java_project_name_Activity_class_name_func_name.

  编译生成,采用的是NDK封装好的脚本ndk-build, 在$NDK主文件夹下,使用很简单,在工程主文件夹

下执行:(假设$NDK已经加入到$PATH)

#ndk-build

...

即可,若成功,则主文件夹的 libs/armeabi 或者libs/arm-v7te 下生成

libhelloworld.so

2.SDK中使用NDK生成的文件

  修改src/my/helloworld/Helloworld.java,使之通过JNI调用C函数:


其中先加载libhelloworld.so,再调用其内的hellow()函数。

#ant debug

重建工程

#adb install ./bin/Helloworld-debug.apk

安装到设备上,运行如下:

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值