Android Studio 2.2 打包Jar调用.so动态链接库

一、使用Android Studio 2.2 编译.so文件(若已有编译好的.so文件继续下一步)
首先新建工程,使用CMake进行JNI编程,具体操作见下面的链接,工程相关内容如下图所示。
Android Studio 2.0+ 使用CMake编程:http://blog.csdn.net/auroraexecue/article/details/73350771
1,、定义native方法
Android Studio 2.2 打包Jar调用.so动态链接库
2.编写.cpp文件
Android Studio 2.2 打包Jar调用.so动态链接库
3、调用JNI检验native方法是否通过
Android Studio 2.2 打包Jar调用.so动态链接库
4、运行效果
Android Studio 2.2 打包Jar调用.so动态链接库
二、新建Module,导入.so文件
1、右击工程目录app新建Module
Android Studio 2.2 打包Jar调用.so动态链接库
2、选择Android Library,然后next,操作如下
Android Studio 2.2 打包Jar调用.so动态链接库
3、填写Module名称时,一定要保证包名和.so文件原包名一致,否则无法调用,然后Finish。
Android Studio 2.2 打包Jar调用.so动态链接库
4、在以后的运行或者修改配置过程中,有时会提醒如下图这样的错误,虽然不知道是什么原因,只要按路径提示在工程中删掉报错文件,然后Make一下就好了。
Android Studio 2.2 打包Jar调用.so动态链接库
Android Studio 2.2 打包Jar调用.so动态链接库
5、新建Module工程目录入如下图所示,打开目录新建一个java类,并声明本地方法,类名和类的路径必须和.so 文件原类名和路径一致,否则无法调用。也可以将原来的类直接复制过来,总之要保证类名和方法名与.so库一致。
Android Studio 2.2 打包Jar调用.so动态链接库
6、在新建Module目录中新建jniLibs文件夹,和正常工程调用.so动态链接库一样,只不过是在新建Module目录中,在本工程中路径为“JNItoJarApplication\jnitojarapplication2\src\main\jniLibs”,并将.so文件的文件夹都拷入jniLibs文件夹下,如下图所示。
Android Studio 2.2 打包Jar调用.so动态链接库
二、配置新建Moudle的build.gradle文件,生成jar文件
1、由于新建的Moudle需要调用jniLibs下的文件,因此要在build.gradle(Module: jnitojarapplication2)中添加配置,代码及添加效果如下。
sourceSets.main.jniLibs.srcDirs = ['jniLibs']
Android Studio 2.2 打包Jar调用.so动态链接库
2、继续配置build.gradle(Module: jnitojarapplication2)文件,指定包名,并配置生成文件目录
在最下面添加如下代码,效果如下图。
task exportJar(type: Copy) {
from('build/intermediates/bundles/release/')//要生成的.jar文件来源
into('build/libs/')//jar包的生成路径
include('classes.jar')
rename ('classes.jar','jnitest.jar')//命名包为“jnitest”,名称可以自己定
}

task deleteOldJar(type: Delete) {
delete 'build/outputs/jnitest.jar' //“jnitest.jar”为要生成的包名和后缀,这一句的意思是:如果包已经存在,则删除掉
}

exportJar.dependsOn(deleteOldJar, build)

Android Studio 2.2 打包Jar调用.so动态链接库
3、生成jar文件
点击工程中右侧的”Gradle“按钮,按下图中的路径找到”exportJar“一项,然后双击,等待生成jar文件
Android Studio 2.2 打包Jar调用.so动态链接库
4、生成成功后在Moudle工程目录build\libs中找到生成的名为jnitest.jar的包。
Android Studio 2.2 打包Jar调用.so动态链接库

至此jar包的生成就完成了,下面是调用。

三、任意工程通过jar包调用.so动态链接库中的方法
1、新建任意工程或者现有任意工程都可以,下面新建任意工程,工程名为MyJNItest。
Android Studio 2.2 打包Jar调用.so动态链接库
2、将之前生成的jar文件拷到工程“app\libs”目录下,然后添加依赖,具体就不详细说了,效果如下图。
Android Studio 2.2 打包Jar调用.so动态链接库
3、在工程目录中,“app\src\main”目录下新建“jniLibs”文件,并将所有.so文件文件夹拷入“jniLibs”中,具体操作同上面的操作,效果如图。
Android Studio 2.2 打包Jar调用.so动态链接库
4、在工程中调用验证效果,代码如下。
Android Studio 2.2 打包Jar调用.so动态链接库
5、运行效果

Android Studio 2.2 打包Jar调用.so动态链接库

到此包的生成和调用就完成了。