前言:
前面在NDK项目里面已经实现了图片压缩,但是别人在引用你的项目的时候,要复制libtrubojpeg.a、各种.h文件,并且还需要配置很多东西,是不是聚德很麻烦。所以说我自己萌生一个想法,平时接入那么多第三方的SDK,大多都是复制一些.so、jar包,然后简单配置一下grade就可使用了,因为之前没开发过SDK,我在试想:我能不能开发SDK,提供.so库和jar,直接在普通的工程里面配置好就能使用呢?答案是肯定的,接下来就说流程了。如果这种形式不是SDK,请原谅!我只是按照我自己的想法模拟第三方SDK包进行开发。
Step1、打jar包
在上一篇文章中,我们新建了一个compress的Module就是用来打出jar包的。
具体参考方式:https://www.jianshu.com/p/e23ccaf4b41f
备注:
老版本Android Studio方式:
//删除旧的jar包
task deleteOldJar(type: Delete) {
delete 'build/outputs/'
}
//导出新的jar包
task exportJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('build/outputs/')
include('classes.jar')
rename('classes.jar', 'CompressUtils.jar')
}
exportJar.dependsOn(deleteOldJar, build)
新版本Android Studio方式
task clearJar(type: Delete) {
delete 'build/outputs/'
}
task makeJar(type: Copy) {
from('build/intermediates/packaged-classes/release/')
into('build/outputs/')
include('classes.jar')
rename ('classes.jar', 'CompressUtils' + android.defaultConfig.versionName + '.jar');
}
makeJar.dependsOn(clearJar, build)
多啰嗦一句:jar与aar包区别参考:https://www.jianshu.com/p/a2eddf5a9b88
Step2、打包so库
上一篇文章的项目里面我们使用的是静态库,这个方便我们打包出来的libcompress.so 里面就包含libturbojpeg.a里面的内容。
具体打包方式参考:https://www.jianshu.com/p/b5375fb219d5
Step3、只欠东风了
我在使用打包好的libcompress.so 发现Apk里面根本就没有该动态库,原来是我应用动态库方式错了。
应用动态库方式一:
![](https://img.haomeiwen.com/i2406435/165ea22096413f16.png)
应用动态库方式二:
![](https://img.haomeiwen.com/i2406435/8b7523dfd2ec5c87.png)
以上两种方式就能把.so库引入进来使用了!
经测试:没毛病,不是NDK工程也能引入使用!
github:https://github.com/MrRightChen/JpegCompress
网友评论