打包依賴.aar檔案以及坑總結
一、打包aar
1、單個模組打包
-
開啟
Gradle
工具視窗,找到Android Library
模組. 在build
任務中雙擊assemble
. -
執行成功後,在
mylibrary/build/outputs/aar
目錄下找到aar
包.
預設Debug
和Release
的AAR
包都會打出來,當然你也可以選擇只打Debug
的包,雙擊assembleDebug
任務就可以了.
只打Release
的包同理.
2、多個模組打包
當要打包的模組又依賴了其它幾個模組時,常常需要把它們打包成一個aar
。多模組打包使用fat-aar,打包關鍵步驟如下:
-
將下載好的
fat-aar.gradle
檔案新增到對應的模組目錄中,並在build.gradle
apply from: 'fat-aar.gradle'
。或直接引用apply from: 'https://raw.githubusercontent.com/adwiv/android-fat-aar/master/fat-aar.gradle'
-
新增要打包的工程,使用
embedded
關鍵字。示例程式碼如下:apply from: 'fat-aar.gradle' dependencies { ... embedded project(':DynamicPageLibrary') embedded project(':VideoPlayerLib') embedded project(':AudioPlayLibrary') embedded project(':BaseCloudMusicResource') }
-
步驟同上《單個模組打包》一致。
二、引入aar
方法一、通過 libs 引入到 app 中
-
把
aar
檔案放在libs
目錄下 -
在
app
的build.gradle
中新增如下內容repositories { flatDir { dirs 'libs' } }
-
之後通過如下方式引入
dependencies { compile(name:'test', ext:'aar') }
-
Rebuild project
-
如果發現引入後無法使用,重啟 Android studio
方法二、把aar
作為一個庫工程的方式引入
當專案中庫工程較多且依賴關係比較複雜時,最好採用這一種方式。如:某一個庫工程也要引入這個aar
選單欄
->File
->New
->New Module
->Import .Jar/.AAR Package
->Next
-> 選擇File name
的檔案 ->Subproject name
命名工程
->Finish
建立完成後是一個工程,工程中包括aar
檔案和build.gradle
檔案。build.gradle
檔案內容如下:
configurations.create("default")
artifacts.add("default", file('musiclibrary_20170622.aar'))
三,遇到的問題
-
Non-constant Fields in Case Labels
原因:在 Android Library 中不能使用
switch case
解決:改成用
else if
,如下圖: -
java.lang.IllegalArgumentException: No view found for id 0x7f0d013d () for fragment TestFragment
描述:在專案中引用了庫裡的
fragment
,在執行後丟擲了找不到view
的異常。但是在 Demo 專案中執行是沒有問題的。原因:庫裡
fragment
的layoutID
與專案中另外一個Fragment
的layoutID
名字相同,導致專案中的佈局會覆蓋庫中的佈局。。解決:修改為不同的名稱。在庫中要注意資源名稱可能與專案同名的問題,比如在庫中的資原始檔都新增字首或字尾,或較長不容易重複的名字。同名的資原始檔只會存在一個,根據庫的巢狀關係,外層會覆蓋內層的資原始檔。