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

作者简介

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


build-->make project结果展示
项目运行结果展示

前言


  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 开发之旅02 so类库 简单使用篇_第1张图片
Android NDK JNI 开发之旅02 so类库 简单使用篇_第2张图片

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

Android NDK JNI 开发之旅02 so类库 简单使用篇_第3张图片
2. 使用so类库项目介绍

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

Android NDK JNI 开发之旅02 so类库 简单使用篇_第4张图片

调用JniUtils.stringFromJNI()

Android NDK JNI 开发之旅02 so类库 简单使用篇_第5张图片

app/build.gradle配置文件

Android NDK JNI 开发之旅02 so类库 简单使用篇_第6张图片

总结


  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 开发之旅02 so类库 简单使用篇)