设为首页 加入收藏

TOP

Android NDK :编写清晰的代码结构
2014-11-24 11:30:43 来源: 作者: 【 】 浏览:0
Tags:Android NDK 编写 清晰 代码 结构

使用Android NDK 在底层开发时,有可能会导致代码结构的混乱,因为C 和C++的代码明显没有Java那样工整,再加上代


码层调用中往往需要进行数据类型的转化,所以,搭建一个条理清晰的代码框架显得非常重要,昨天看到一个老外的文章,就


说到这个问题,现在根据个人经验稍微总结一下:


本Demo中用到的三个代码文件为 JNI.java(负责Java层的native方法), native_glue.c(负责Java与C 语言间的类型转化,


java与C语言函数的调用),native.c (负责实现具体的C语言函数);



第一、在Java层,建议专门写一个类来进行C和Java代码间的调用,比如 JNI.java,在这个 类中只写上 native方法和 加载


动态库的代码,如下:


现在生成.h头文件,具体生成方法请参考文章开头的连接,生成的.h内容如下:



注意方法的名称,其和你所写的 JNI.java的包名对应一致;


第二、这一步是关键,在程序的目录下新建一个文件夹,命名为 jni ,在里面写一个 native_glue.c的C 文件,我把这个 .c 文


件命名为glue(胶水),意为用它来将Java代码和C 代码粘和起来,就像一个接口一样,负责Java层和C/C++层的相互调用,


在这个文件中写上上面生成的 .h 文件中的,除此之外,可以在这个文件文件中写上Java和 C语言数据类型转换的代码,而真正


native.c 代码只负责函数功能的实现,属于纯C语言代码,不涉及任何与Java有关的操作,现 native_glue.c的完整代码如下:



如上所示,native_glue.c 作为接口,对数据进行预处理,再调用 native.c中的函数,使得 native.c集中负责具体实现,不会牵


扯任何多余操作,代码结构清晰,以后修改代码时也会更加方便,你只需更改native_glue.c 的函数名称就行,不用对整个文件


修改。


第四、经过上述三个步骤,一个完整的Android NDK 代码框架就写好了,再在 .c 文件的目录下编写 Android.mk,在该文件目


录下运行 ndk-build 命令,生成动态库,Android.mk文件如下:


编译如下图所示:




这样,就会自动在程序根目录下生成一个 libs 文件夹,里面有一个 libndkDemo.so 文件(NDK 规定编译生成的库文件名称必须以


lib 开头,比如你在Android.mk中写的库名称为 ndkDemo,那么真正生成的库名称是 libndkDemo.so,这就是你所需要的动态


库文件了。这个Demo的代码结构如下:




源代码下载地址:



具体下载目录在 /2012年资料/7月/23日/Android NDK :编写清晰的代码结构/


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android+NDK 入门备忘 Ubuntu 11... 下一篇Android NDK :在 C语言代码中输出..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)