作者简介
微信公众号(高质量文章推送):走向全栈工程师
作者:陈博易
声明:本文是个人原创,未经允许请勿转载
商业合作请在微信公众号回复:联系方式
![](https://img.haomeiwen.com/i3376017/22a83369e71b9ff2.png)
![](https://img.haomeiwen.com/i3376017/e329dd02b8ec4209.png)
前言
- 为什么要学习JNI呢,我的回答是:因为我好学!哈哈哈
- 因为c/c++比Java效率高,所以应用运行起来速度比较快,特别是一些游戏中的算法。
- 为了保密,都知道apk都可以被反编译,就算有代码混淆,也只是难看懂,并不是完全看不懂,但用jni编译成.so就不同了,可以使破解的难度更加大。
- 一个平台(C++代码)迁移到Android平台,底层逻辑是相同的,这样就可以通过移植,利用JNI调用底层C++代码,避免相同逻辑的代码重复去写,不过这个过程一定要注意底层对象的释放问题。
环境以及工具
- Android项目:AndroidStudio3.0
- NDK
- CMake3.6.4
- LLDB3.0
整体步骤
- 创建so类库项目介绍
- 使用so类库项目介绍
核心步骤解读
1. 创建so类库项目介绍
创建一个新的包com.ndk.use
这里大家肯定有问题要问,为什么要用新的包呢?
因为声明native本地方法和jni层的实现方法的全名(包名+类名)要一致,所以我就单独创建了一个包,方便等下直接复制到新项目直接使用
![](https://img.haomeiwen.com/i3376017/b011682193e770fe.png)
![](https://img.haomeiwen.com/i3376017/22fc8ee688ba4c9c.png)
测试当前类库能不能正常使用
![](https://img.haomeiwen.com/i3376017/90fb50170476df19.png)
2. 使用so类库项目介绍
创建一个新项目,为了使用自己刚写好的类库。
将类库的项目中com.ndk.use和jniLibs中的代码和类库复制到如下图的项目中。此时就可以直接使用了,并不需要创建jniLibs的目录,那种方式也是可以的
![](https://img.haomeiwen.com/i3376017/186d248a59d5f9d2.png)
调用JniUtils.stringFromJNI()
![](https://img.haomeiwen.com/i3376017/a51dadadd8c19871.png)
app/build.gradle配置文件
![](https://img.haomeiwen.com/i3376017/f2ca68edeead0660.png)
总结
- 请大家多关注关注我。
- 这样的使用还不是很优雅的,下一篇将使用优雅的方式来使用so
个人相关教程
各种大佬推荐的编程视频资源分享
Android 微信 支付宝支付,2行代码实现支付
Android前端 Java后端 集成支付宝支付
postman使用 Android java后端 接口调试工具
Android抓包 Charles http接口调试
消息推送 Android java后端集成小米推送
如何导入简单的java项目-IntelliJ IDEA
请关注我(高质量文章推送)
源码地址———关注微信公众号,回复:ndk类库使用01
![](https://img.haomeiwen.com/i3376017/984d23bad2d5a87d.jpg)
网友评论