項目使用AAR打包遇到的坑

關於項目爲什麼要打包成AAR這裏就不詳細說明,這裏只說說打包AAR遇到的坑

整個項目打包成AAR需要把項目變成module 要怎麼變成module這是初級的問題,這裏就不過多闡述了, 主要說module 打包成aar

第一種很簡單的方式,按下圖方式直接打包



生成的aar在庫下面的build --outputs--aar 裏面
然後就能在需要的項目裏面依賴aar, 如果module裏面還有一些第三庫或者依賴,需要在你使用aar的地方再次依賴,因爲直接生成AAR這種方式不能把第三方庫和依賴打成AAR.
這種情況適合比較簡單無過多依賴庫.

第二種將aar文件打包至指定的本地maven倉庫中
感興趣可以參考這篇文章,但是面對正常項目,會有很多第三方依賴或者嵌套依賴,導致打出來的包會找不到第三方的庫.

第三種,可以把依賴庫直接打如到aar中,fat-aar-android,也有相關文檔,對於第一次打包AAR的話,或多或少會有一些困難,以下是我在集成AAR的過程中遇到的坑,希望對小夥伴有所幫助,如有疑問,也可以私聊我,我如果看到會回覆的.
問題:
1.遇到butterknife個AAR衝突,而且butterknife作者已經停止維護,所以要麼換比較流行的ViewBinding組件,要麼就用原生自帶的,考慮到兼容的問題,還是使用原生的方法比較靠譜
2.注意不要重複依賴第三方庫,像一些公共的庫也不要打入到aar中
3.要換成implementation 'androidx.multidex:multidex:2.0.0'
4.資源衝突,包括第三方庫app_name等 資源重複打包AAR失敗
如果library和module中含有同名的資源(比如 string/app_name),編譯將會報duplication resources的相關錯誤,有兩種方法可以解決這個問題:
考慮將library以及module中的資源都加一個前綴來避免資源衝突;
在gradle.properties中添加android.disableResourceValidation=true可以忽略資源衝突的編譯錯誤,程序會採用第一個找到的同名資源作爲實際資源,不建議這樣做,如果資源同名但實際資源不一樣會造成不可預期的問題。
5.報錯提示"Can’t process attribute android:fillColor="@android:color/white":
references to other resources are not supported by build-time PNG
generation. File was preprocessed as vector drawable support was added
in Android 5.0 (API level 21) See
http://developer.android.com/tools/help/vector-asset-studio.html for
details."
解決方案:vectorDrawables.useSupportLibrary = true//支持矢量圖
6.AAR項目裏面嵌入了AAR第三方包,需要單獨提取出來,放在主包裏面再次引用
7.最重要的第一點,製作AAR的包,修改之後,重新打包一定要clean build.rebuild防止有緩存得不償失,特別引用了像聽雲這種第三方的sdk,影響全局的gradle

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章