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

簡介

最近由於項目的要求,須要把開發的模塊打包成aar,供其餘項目調用,在搞了一段時間後,發現這裏仍是有不少須要注意的地方,因此記錄一下,幫助你們不要走彎路。android

首先何爲aar包?
segmentfault

jar與aar的簡單區別:微信

  • *.jar:只包含了class文件與清單文件 ,不包含資源文件,如圖片等全部res中的文件。
  • *.aar:包含全部資源 ,class 以及 res 資源文件所有包含

新工程(無依賴)打包AAR的步驟

1.新建Library
app

而後一路next+finish就新建成功了佈局

將要打包的文件都按照文件夾的位置放入你的Module中,而後直接點擊build-->Make Moudle app

打包成功後會在對應的路徑下生成aar
微信支付

固然了,這些應該應該都不是咱們須要的, 由於開發項目中必定會有所依賴的。
並且也確定不是空的項目。gradle

成型的項目(有依賴)如何快速打包AAR

咱們能夠直接在項目中New一個Moudle 而後把項目複製到Moudle中,或者從新複製出來一個當前項目,而後在複製的項目中直接把此項目修改爲AAR。ui

我就說一下第二種把,也就是把複製項目直接修改爲AAR,咱們須要作以下改動:
1. 修改app下的bulid gradle文件:
把apply plugin: 'com.android.application'修改爲apply plugin: 'com.android.library'
spa

2. 註釋調defaultConfig下的applicationId
3d

3.AndroidManifest.xml文件,修改application

而且註釋調首先啓動的Activity啓動的action

<intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

4.若是你本身自定義了Application,須要去掉,由於AAR中是沒有Application的,那問題來了,咱們原來在Application中的初始化代碼怎麼辦?這個簡單,咱們能夠單獨寫一個Options類,提供給調用者,讓他傳遞過來application,這樣咱們就能夠在這個類中作一些初始化操做了。

調用者在他的application中傳入application:

而後直接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的異常

今天就分析到這裏,下次繼續新內容!

相關文章
相關標籤/搜索