在項目中,會遇到一些已經寫好的module模塊,然后打成jar包或aar包;但是如果這些三方庫出現了bug,就需要把module的源代碼修改修復那個bug。這個時候如果要導入module模塊的話,可以按照以下步驟來。
說步驟前,先分清jar包和aar包的區別
區別:
jar包:只包含class文件和清單文件,不包含資源文件,比如圖片等所有的 res下的資源文件;
aar包:aar文件包含所有資源文件,包括class及res資源文件;
打包詳細步驟:
1、jar包和aar包都必須要先將module導入,可以新建一個空工程導入(如果有主工程,就直接導入到主工程),File->New->new Module/import Module,這一步簡單不做詳細介紹
2、修改moudle中的build.gradle文件,將其中的com.android.application修改為com.android.library,并且將applicationId "com.demo.mymoudle"這一行刪掉 (必須,否則一個項目就有兩個applicationId了,并且module是作為library來打的)
3、主工程app:build.gradle 中添加依賴,導入的時候自動加的
dependencies {
...
compile project(':testlibrary')
}
4、編譯我們的module,生成release版本的aar,注意千萬不要是debug版本的,
點擊最右邊的gradle面板,選擇我們的module進行編譯,CommandLine 指令為assemble(默認生成debug和release)
此處打jar為:
打開module名稱->Tasks->other->makeJar
5、查看module下的build/output文件夾,即可看到生成的aar文件,我們一般選用那個release版本的aar文件即可
項目中添加aar步驟:
1、把aar包直接放入lib中
2、在module 里面的build.gradle 的根目錄添加
repositories{
flatDir {
dirs 'libs'
}
}
compile(name:'SDK-release', ext:'aar')
3、在做完了前三步以后,會看到在項目的 External Libraries 里面看到添加的aar
高潮:
往往跑導入的module時,會有挺多問題的,說一下我踩的比較大的坑
1、重復包:如果主項目app和module有導入了重復的jar包,可以對著module點右鍵,選擇Open Module Setting,選擇Dependencies,將scope改為provided
2、混淆:module的混淆一定要關了,主項目app的也和module同步關了,不然會出現類引用沒問題,但是跑起來卻報錯的詭異現象,巨坑;同時混淆文件 proguard.cfp 也會帶來一些其他莫名奇妙的報錯,需要百度一下解決
3、manifest merge:如果報錯里有這個幾字眼的話,肯定是module的manifest沒有處理干凈,譬如出現了label:name 這樣的情況,這是不允許的,這個時候就可以直接點開manifest一個一個處理
4、如果module模塊的項目和主工程是同一個的話,盡量導入到主工程去調試,因為module模塊和主工程的gradler配置版本是要相同的。如果新建的一個工程,可能gradler和主項目的gradler版本不同而導致項目運行不起來,后續調節也很麻煩
5、其余的坑都可以通過百度去查找出答案,就不詳細說了,多百度和查stack overflow