前言:
前面在NDK項(xiàng)目里面已經(jīng)實(shí)現(xiàn)了圖片壓縮,但是別人在引用你的項(xiàng)目的時(shí)候,要復(fù)制libtrubojpeg.a、各種.h文件,并且還需要配置很多東西,是不是聚德很麻煩。所以說我自己萌生一個(gè)想法,平時(shí)接入那么多第三方的SDK,大多都是復(fù)制一些.so、jar包,然后簡單配置一下grade就可使用了,因?yàn)橹皼]開發(fā)過SDK,我在試想:我能不能開發(fā)SDK,提供.so庫和jar,直接在普通的工程里面配置好就能使用呢?答案是肯定的,接下來就說流程了。如果這種形式不是SDK,請?jiān)彛∥抑皇前凑瘴易约旱南敕M第三方SDK包進(jìn)行開發(fā)。
Step1、打jar包
在上一篇文章中,我們新建了一個(gè)compress的Module就是用來打出jar包的。
具體參考方式:http://www.lxweimin.com/p/e23ccaf4b41f
備注:
老版本Android Studio方式:
//刪除舊的jar包
task deleteOldJar(type: Delete) {
delete 'build/outputs/'
}
//導(dǎo)出新的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包區(qū)別參考:http://www.lxweimin.com/p/a2eddf5a9b88
Step2、打包so庫
上一篇文章的項(xiàng)目里面我們使用的是靜態(tài)庫,這個(gè)方便我們打包出來的libcompress.so 里面就包含libturbojpeg.a里面的內(nèi)容。
具體打包方式參考:http://www.lxweimin.com/p/b5375fb219d5
Step3、只欠東風(fēng)了
我在使用打包好的libcompress.so 發(fā)現(xiàn)Apk里面根本就沒有該動(dòng)態(tài)庫,原來是我應(yīng)用動(dòng)態(tài)庫方式錯(cuò)了。
應(yīng)用動(dòng)態(tài)庫方式一:
應(yīng)用動(dòng)態(tài)庫方式二:
以上兩種方式就能把.so庫引入進(jìn)來使用了!
經(jīng)測試:沒毛病,不是NDK工程也能引入使用!
github:https://github.com/MrRightChen/JpegCompress