Android NDK JNI 开发之旅 so类库 简单使用篇

作者简介

微信公众号(高质量文章推送):走向全栈工程师
作者:陈博易
声明:本文是个人原创,未经允许请勿转载
商业合作请在微信公众号回复:联系方式


Android NDK JNI 开发之旅 so类库 简单使用篇

Android NDK JNI 开发之旅 so类库 简单使用篇

前言


  1. 为什么要学习JNI呢,我的回答是:因为我好学!哈哈哈
  2. 因为c/c++比Java效率高,所以应用运行起来速度比较快,特别是一些游戏中的算法。
  3. 为了保密,都知道apk都可以被反编译,就算有代码混淆,也只是难看懂,并不是完全看不懂,但用jni编译成.so就不同了,可以使**的难度更加大。
  4. 一个平台(C++代码)迁移到Android平台,底层逻辑是相同的,这样就可以通过移植,利用JNI调用底层C++代码,避免相同逻辑的代码重复去写,不过这个过程一定要注意底层对象的释放问题。

环境以及工具


  1. Android项目:AndroidStudio3.0
  2. NDK
  3. CMake3.6.4
  4. LLDB3.0

整体步骤


  1. 创建so类库项目介绍
  2. 使用so类库项目介绍

核心步骤解读


1. 创建so类库项目介绍

创建一个新的包com.ndk.use
这里大家肯定有问题要问,为什么要用新的包呢?
因为声明native本地方法和jni层的实现方法的全名(包名+类名)要一致,所以我就单独创建了一个包,方便等下直接复制到新项目直接使用

Android NDK JNI 开发之旅 so类库 简单使用篇

Android NDK JNI 开发之旅 so类库 简单使用篇

测试当前类库能不能正常使用

Android NDK JNI 开发之旅 so类库 简单使用篇

2. 使用so类库项目介绍

创建一个新项目,为了使用自己刚写好的类库。
将类库的项目中com.ndk.use和jniLibs中的代码和类库复制到如下图的项目中。此时就可以直接使用了,并不需要创建jniLibs的目录,那种方式也是可以的

Android NDK JNI 开发之旅 so类库 简单使用篇

调用JniUtils.stringFromJNI()

Android NDK JNI 开发之旅 so类库 简单使用篇

app/build.gradle配置文件

Android NDK JNI 开发之旅 so类库 简单使用篇

总结


  1. 请大家多关注关注我。
  2. 这样的使用还不是很优雅的,下一篇将使用优雅的方式来使用so

Android NDK JNI 开发 环境搭建入门篇

个人相关教程

各种大佬推荐的编程视频资源分享
Android 微信 支付宝支付,2行代码实现支付
Android前端 Java后端 集成支付宝支付
postman使用 Android java后端 接口调试工具
Android抓包 Charles http接口调试
消息推送 Android java后端集成小米推送
如何导入简单的java项目-IntelliJ IDEA

请关注我(高质量文章推送)

源码地址———关注微信公众号,回复:ndk类库使用01

Android NDK JNI 开发之旅 开源项目

Android NDK JNI 开发之旅 so类库 简单使用篇