一、打包 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
名字相同,導致項目中的佈局會覆蓋庫中的佈局。。解決:修改爲不同的名稱。在庫中要注意資源名稱可能與項目同名的問題,比如在庫中的資源文件都添加前綴或後綴,或較長不容易重複的名字。同名的資源文件只會存在一個,根據庫的嵌套關係,外層會覆蓋內層的資源文件。