關(guān)于安卓打包生成aar,jar方式
背景
在開發(fā)的過程中,主項(xiàng)目引入三方功能的方式有很多,主要是以下幾個(gè)方面:
(1)直接引入源代碼module(優(yōu)點(diǎn):方便修改源碼,易于維護(hù),迭代。缺點(diǎn):對于新手不友好,可能會(huì)遇到依賴兼容問題,需要排除并且適配)
(2)遠(yuǎn)程依賴,目前主要是用maven依賴。(優(yōu)點(diǎn):幾行代碼即可依賴完成。缺點(diǎn),庫存在問題的話,修改很麻煩)
(3)直接引入jar或者aar。(module編譯后的產(chǎn)物,優(yōu)點(diǎn):可增加混淆之類的規(guī)則,使代碼更安全,隱蔽。缺點(diǎn):本地修改會(huì)有難度,編譯有一定的難度)
本文,就是講述,如何使用androidstudio打包生成aar,jar。
環(huán)境
win10
jdk 11
jdk 8
as 4.0+
gradle 7.0+
編碼
首要要搞懂,aar包和jar包有什么區(qū)別?很簡單來說,aar包是在jar包上,增加了資源,例如layout,res。
如果你開發(fā)的是一個(gè)純業(yè)務(wù)類型的庫,可以打jar包。如果涉及到界面等邏輯,就需要打aar包了。
(一)生成aar包
首先,要有個(gè)androidstudio中的module。然后clean project,build project即可生成。具體目錄,就是在module對于的build項(xiàng)目下查找,即可看到,結(jié)構(gòu)如下圖:
那么,又是如何生成release的aar包呢?
只需要點(diǎn)擊右側(cè)邊欄的gradle->對應(yīng)模塊->other->assembleRelease,等待編譯完成即可,編譯后內(nèi)容如下圖:
上述就是一些關(guān)于model如何生成一個(gè)aar包的操作。
(二)生成jar包
對于生成一個(gè)jar包,比aar包要復(fù)雜一點(diǎn)。需要在模塊目錄的build.gradle文件,加入以下代碼:
task makeJar(type: Copy) {
//刪除存在的
delete 'build/libs/ztuiqueue.jar'
//設(shè)置拷貝的文件
from('build/intermediates/aar_main_jar/release/')
//打進(jìn)jar包后的文件目錄
into('output/libs/')
//將classes.jar放入build/libs/目錄下 //include ,exclude參數(shù)來設(shè)置過濾 //(我們只關(guān)心classes.jar這個(gè)文件)
include('classes.jar')
//重命名
rename('classes.jar', 'ztuiqueue.jar')
}
makeJar.dependsOn(build)
其中,函數(shù)from中的路徑,是隨著gradle的版本不一樣二變化的。需要在build目錄下進(jìn)行查找。
上述代碼的意思,僅僅是把jar包復(fù)制出來,其實(shí)原jar包的目錄是在比較深的層級的。
(三)代碼混淆
對于完成了(一)(二)兩步的朋友,現(xiàn)在已經(jīng)接近尾聲了。最后就是一個(gè)代碼混淆的問題。如果不涉及混淆,請忽略該步驟。
對于module中的打包aar/jar代碼混淆,需要在build.gradle文件中,buildTypes路徑下,加入以下代碼即可:
buildTypes {
release {
minifyEnabled true
/*模塊混淆*/
consumerProguardFiles 'proguard-rules-libxui-queue.pro'
/*打包aar,jar混淆*/
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules-libxui-queue.pro'
}
debug {
minifyEnabled false
/*模塊混淆*/
consumerProguardFiles 'proguard-rules-libxui-queue.pro'
/*打包aar,jar混淆*/
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules-libxui-queue.pro'
}
}
其中,很清晰明了的一句,就是 /打包aar,jar混淆/
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules-libxui-queue.pro'
而“proguard-rules-libxui-queue.pro”請?zhí)鎿Q成你開發(fā)module的具體混淆文件名字即可。
上述代碼的意思就是,如果是正式包,則開啟混淆,測試包則不開啟。當(dāng)然,主項(xiàng)目的混淆狀態(tài)也會(huì)直接影響子module的混淆狀態(tài)。
注意
混淆的過程中,需要遵循對應(yīng)的混淆原則。否則會(huì)出現(xiàn)無法識別的情況。
還有,對外的輸出的jar包,aar包,也應(yīng)該附帶對應(yīng)的混淆規(guī)則說明。文章來源:http://www.zghlxwxcb.cn/news/detail-641640.html
that‘s all-------------------------------------------------------------------------------文章來源地址http://www.zghlxwxcb.cn/news/detail-641640.html
到了這里,關(guān)于關(guān)于安卓打包生成aar,jar實(shí)現(xiàn)(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!