继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

小白探索系列之Android中.so库的制作与调用

aluckdog
关注TA
已关注
手记 452
粉丝 68
获赞 393

目录

1.开发环境

2.简单编写并生成.so文件

3.生成相应的jar文件

1.开发环境

Mac

Android Studio Version 3.0.1

minSdkVersion 16

compileSdkVersion 26

targetSdkVersion 26

2.简单编写并生成.so文件


勾选Inclued C++ support

默认

工程结构

工程默认会生成一个.cpp文件,并且在MainActivity中也会生成一个默认的native方法,点击查看stringFromJNI()方法


native-lib.cpp

很简单,返回了一个熟悉的Hello from C++,接下来我们定义我们自己的native方法,仿照默认生成的stringFromJNI()方法,创建一个自己的native方法,名叫getAppId(),如图


option+enter自动在.cpp文件中创建相应方法


.cpp文件中自动生成的方法

系统自动为我们创建了新的方法,我们照葫芦画瓢写一个String类型的返回值


返回String字符串


可以调用自定义的方法了

这个时候我们就可以编译我们自己的.so库了,点击AS工具栏的Build->Make Project,编译工程后,在目录app->build->intermediates->cmake->debug->obj->下可以找到不同架构下的.so文件,如图


.so文件路径

3.生成相应的jar文件

这时候这个.so库我们就可以使用了,但是...但是......但是.........还没完,我们要在其他的App中使用这个动态库还需要创建一个.jar去提供调用的接口,那么我们创建一个类名叫JNIUtil,然后将MainActivity中的方法剪切过来.


此时发现native方法找不到,注意.cpp文件中的方法名为

Java_com_demo_so_MainActivity_stringFromJNI

格式为 --->  Java_包名_类名_方法名

那么我们将.cpp文件中的方法改名为

Java_com_demo_so_JNIUtil_stringFromJNI

Java_com_demo_so_JNIUtil_getAppId

此时JNIUtil类中方法不再报错

然后我们就需要开始制作.jar文件了,首先我们重新编译一下工程,然后在app下的build.gradle文件中添加如下代码


build.gradle

这时候在AS的右侧Gradle标签点开,app-->Tasks-->other中可以找到一个makeJar的任务,双击执行,然后在工程中app-->build路径下可以找到libs文件夹,里边就是我们要的JniLib.jar文件,此时当我们拿到.jar文件与.so文件后,我们就可以在其他工程中使用我们的.so库了.



作者:Summer_Yang
链接:https://www.jianshu.com/p/b35e12c9b856


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP