在項(xiàng)目中意蛀,會(huì)遇到一些已經(jīng)寫(xiě)好的module模塊志于,然后打成jar包或aar包突勇;但是如果這些三方庫(kù)出現(xiàn)了bug装盯,就需要把module的源代碼修改修復(fù)那個(gè)bug。這個(gè)時(shí)候如果要導(dǎo)入module模塊的話甲馋,可以按照以下步驟來(lái)埂奈。
說(shuō)步驟前,先分清jar包和aar包的區(qū)別
區(qū)別:
jar包:只包含class文件和清單文件定躏,不包含資源文件账磺,比如圖片等所有的 res下的資源文件芹敌;
aar包:aar文件包含所有資源文件,包括class及res資源文件垮抗;
打包詳細(xì)步驟:
1氏捞、jar包和aar包都必須要先將module導(dǎo)入,可以新建一個(gè)空工程導(dǎo)入(如果有主工程冒版,就直接導(dǎo)入到主工程)液茎,F(xiàn)ile->New->new Module/import Module,這一步簡(jiǎn)單不做詳細(xì)介紹
2辞嗡、修改moudle中的build.gradle文件,將其中的com.android.application修改為com.android.library,并且將applicationId "com.demo.mymoudle"這一行刪掉 (必須豁护,否則一個(gè)項(xiàng)目就有兩個(gè)applicationId了,并且module是作為library來(lái)打的)
3欲间、主工程app:build.gradle 中添加依賴楚里,導(dǎo)入的時(shí)候自動(dòng)加的
dependencies {
...
compile project(':testlibrary')
}
4、編譯我們的module猎贴,生成release版本的aar班缎,注意千萬(wàn)不要是debug版本的,
點(diǎn)擊最右邊的gradle面板她渴,選擇我們的module進(jìn)行編譯达址,CommandLine 指令為assemble(默認(rèn)生成debug和release)
此處打jar為:
打開(kāi)module名稱->Tasks->other->makeJar
5、查看module下的build/output文件夾,即可看到生成的aar文件,我們一般選用那個(gè)release版本的aar文件即可
項(xiàng)目中添加aar步驟:
1趁耗、把a(bǔ)ar包直接放入lib中
2沉唠、在module 里面的build.gradle 的根目錄添加
repositories{
flatDir {
dirs 'libs'
}
}
compile(name:'SDK-release', ext:'aar')
3、在做完了前三步以后苛败,會(huì)看到在項(xiàng)目的 External Libraries 里面看到添加的aar
高潮:
往往跑導(dǎo)入的module時(shí)满葛,會(huì)有挺多問(wèn)題的,說(shuō)一下我踩的比較大的坑
1罢屈、重復(fù)包:如果主項(xiàng)目app和module有導(dǎo)入了重復(fù)的jar包嘀韧,可以對(duì)著module點(diǎn)右鍵,選擇Open Module Setting缠捌,選擇Dependencies锄贷,將scope改為provided
2、混淆:module的混淆一定要關(guān)了曼月,主項(xiàng)目app的也和module同步關(guān)了谊却,不然會(huì)出現(xiàn)類引用沒(méi)問(wèn)題,但是跑起來(lái)卻報(bào)錯(cuò)的詭異現(xiàn)象哑芹,巨坑炎辨;同時(shí)混淆文件 proguard.cfp 也會(huì)帶來(lái)一些其他莫名奇妙的報(bào)錯(cuò),需要百度一下解決
3绩衷、manifest merge:如果報(bào)錯(cuò)里有這個(gè)幾字眼的話蹦魔,肯定是module的manifest沒(méi)有處理干凈,譬如出現(xiàn)了label:name 這樣的情況咳燕,這是不允許的勿决,這個(gè)時(shí)候就可以直接點(diǎn)開(kāi)manifest一個(gè)一個(gè)處理
4、如果module模塊的項(xiàng)目和主工程是同一個(gè)的話招盲,盡量導(dǎo)入到主工程去調(diào)試低缩,因?yàn)閙odule模塊和主工程的gradler配置版本是要相同的。如果新建的一個(gè)工程曹货,可能gradler和主項(xiàng)目的gradler版本不同而導(dǎo)致項(xiàng)目運(yùn)行不起來(lái)咆繁,后續(xù)調(diào)節(jié)也很麻煩
5、其余的坑都可以通過(guò)百度去查找出答案顶籽,就不詳細(xì)說(shuō)了玩般,多百度和查stack overflow