Android-打包AAR步驟以及最為關鍵的注意事項!


### 簡介 最近因為項目的要求,需要把開發的模塊打包成aar,供其他項目調用,在搞了一段時間后,發現這里還是有很多需要注意的地方,所以記錄一下,幫助大家不要走彎路。 **首先何為aar包?** ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084035526-598653323.png) jar與aar的簡單區別: - *.jar:只包含了class文件與清單文件 ,不包含資源文件,如圖片等所有res中的文件。 - *.aar:包含所有資源 ,class 以及 res 資源文件全部包含 ### 新工程(無依賴)打包AAR的步驟 1.新建Library ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084036712-1060300939.png) ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084037090-417644686.png) 然后一路next+finish就新建成功了 將要打包的文件都按照文件夾的位置放入你的Module中,然后直接點擊build-->Make Moudle app ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084037615-1666035034.png) 打包成功后會在對應的路徑下生成aar ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084037922-143770850.png) 當然了,這些應該應該都不是我們需要的, 因為開發項目中一定會有所依賴的。 而且也肯定不是空的項目。 ### 成型的項目(有依賴)如何快速打包AAR 我們可以直接在項目中New一個Moudle 然后把項目復制到Moudle中,或者重新復制出來一個當前項目,然后在復制的項目中直接把此項目修改成AAR。 我就說一下第二種把,也就是把復制項目直接修改成AAR,我們需要做如下改動: **1.** 修改app下的bulid gradle文件: 把apply plugin: 'com.android.application'修改成apply plugin: 'com.android.library' ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084038264-1758201364.png) **2.** 注釋調defaultConfig下的applicationId ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084038601-887148425.png) 3.AndroidManifest.xml文件,修改application ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084038871-1587446694.png) 並且注釋調首先啟動的Activity啟動的action ``` ``` 4.如果你自己自定義了Application,需要去掉,因為AAR中是沒有Application的,那問題來了,我們原來在Application中的初始化代碼怎么辦?這個簡單,我們可以單獨寫一個Options類,提供給調用者,讓他傳遞過來application,這樣我們就可以在這個類中做一些初始化操作了。 ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084039249-298957270.png) 調用者在他的application中傳入application: ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084039845-2110291686.png) 然后直接build-->Make Moudle app 就可以生成aar了! ### 注意事項 **1.** 主項目需要依賴AAR中所依賴的遠程庫,否則會出現ClassNotFound異常 這里也許某個依賴庫你們的版本會發生沖突,這就需要你們協調了 **2.** 資源命名最好統統加上你的項目名字前綴,比如圖片資源、string、color、dimens、layout等等,反正res目錄下所有文件最好都使用統一的加前綴命名,防止跟宿主app下的資源重復,因為aar引用跟源碼引用起到的效果一樣一樣的,所有很容易出現資源重復引用的問題,所以加上前綴非常有必要。 **3.** 如果該aar包里面有微信支付,分享等第三方庫,你要在主工程中使用,要記得在gradle里面替換applicationId,或者用你主工程的包名和key去獲取第三方操作的key和id 以分享為例,如果你清單文件中的分享KEY與主項目中的build gradle文件中的分享KEY不同的話,就會包清單文件異常的。 **4.** butterknife需要統一用8.4.0以上的版本,不然報錯 ;依我的建議,最好不用,否則有你好受的哈! **5.** 如果在aar的MyAppliction里面使用了類的管理器,那么在打包成aar的時候需要將代碼抽出來做個獨立的類管理器,記住一點,打包成aar之后所有和application有關的東西都要檢查替換,避免出現空指針異常。 **6.** AAR模塊用butterknife需要把資源R改為R2(批量替換) **7.** 布局文件不要重名,否則會報找不到Id的異常 今天就分析到這里,下次繼續新內容! ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190911084040101-41244044.jpg)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM