NDK开发流程简介

一.NDK开发流程

1、在Java里面编写native代码
2、创建JNI目录,编写C代码,生成头文件
3、配置动态链接库的名称
4、加载动态链接库
5、使用

二.利用AS生成支持JNI开发的项目

安卓机器人思路:利用AS生成支持JNI的项目,再将该JNI项目下的app moudle修改为Library,从而可以导出aar库文件,库文件中既包含了so文件也包含了java文件等。最终将此aar文件提供给第三发开发者。(之所以这么麻烦,是因为AS不支持直接生成支持jni的module)。
由于利用项目生成的默认module为app,在将此名为app的module改名后导入到我的工程中。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这里,之所以没有选择Add No Activity,是因为非空的项目中会有一个JNI示例。

在这里插入图片描述

一路默认下去,这一页中的有些配置还没搞太清楚。

在这里插入图片描述

建立完成后,打开我的工作工程,导入上述module

注意修改一下module名字。

在这里插入图片描述

导入成功后,将该module修改为Library类型:修改build.gradle如上图所示。
将第一行的application类型改为library类型,同时去掉applicationID配置项;

重新编译后可生成arr文件。

如若添加新的cpp文件后需将cpp文件配置到CMakeList.txt文件中:
在这里插入图片描述

利用解压文件将该arr文件解压,可以看到该arr中生成了jar包,jni文件夹中生成了so包。

在这里插入图片描述
在这里插入图片描述

这里jni目录下生成的名字为libnative-lib.so,由于通过向导生成的jni项目默认名称都叫native-lib,所以最终生成的so文件名都为“libnative-lib.so”,若某个项目依赖了多个同名的jni项目则会报错,所以这里要将native-lib修改为不重名的名字。由于本解决方案中app/CMake.text中也定义了名字为native-lib的library,所以会报错
解决方法:将tsjnilib的CMake文件的Library名称修改为tsjni-lib
问题完美解决:

至此即可将该aar库提供给第三方使用。使用方法为:将该aar包复制到第三方项目的libs目录下,配置build.gradle文件:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值