打包依賴.aar文件以及坑總結


一、打包 aar

1、單個模塊打包

  1. 打開 Gradle 工具窗口,找到 Android Library 模塊. 在 build 任務中雙擊 assemble.

  2. 執行成功後,在 mylibrary/build/outputs/aar 目錄下找到 aar 包.

默認 Debug  Release  AAR 包都會打出來,當然你也可以選擇只打 Debug 的包,雙擊 assembleDebug 任務就可以了. 只打 Release 的包同理.

2、多個模塊打包

當要打包的模塊又依賴了其它幾個模塊時,常常需要把它們打包成一個 aar。多模塊打包使用 fat-aar,打包關鍵步驟如下:

  1. 將下載好的 fat-aar.gradle 文件添加到對應的模塊目錄中,並在 build.gradle中引入 apply from: 'fat-aar.gradle'。或直接引用 apply from: 'https://raw.githubusercontent.com/adwiv/android-fat-aar/master/fat-aar.gradle'

  2. 添加要打包的工程,使用 embedded 關鍵字。示例代碼如下:

    apply from: 'fat-aar.gradle'
    dependencies {
        ...
       embedded project(':DynamicPageLibrary')
       embedded project(':VideoPlayerLib')
       embedded project(':AudioPlayLibrary')
       embedded project(':BaseCloudMusicResource')
    }
  3. 步驟同上《單個模塊打包》一致。

二、引入 aar

方法一、通過 libs 引入到 app 中

  1.  aar 文件放在 libs 目錄下

  2.  app  build.gradle 中添加如下內容

    repositories {
        flatDir {
            dirs 'libs' 
        }
    }
  3. 之後通過如下方式引入

    dependencies {
        compile(name:'test', ext:'aar')
    }
  4. Rebuild project

  5. 如果發現引入後無法使用,重啓 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'))


三,遇到的問題

  1. Non-constant Fields in Case Labels

    原因:在 Android Library 中不能使用 switch case

    解決:改成用 else if,如下圖:


  2. java.lang.IllegalArgumentException: No view found for id 0x7f0d013d () for fragment TestFragment

    描述:在項目中引用了庫裏的 fragment,在運行後拋出了找不到 view 的異常。但是在 Demo 項目中運行是沒有問題的。

    原因:庫裏 fragment  layoutID 與項目中另外一個 Fragment  layoutID名字相同,導致項目中的佈局會覆蓋庫中的佈局。

    解決:修改爲不同的名稱。在庫中要注意資源名稱可能與項目同名的問題,比如在庫中的資源文件都添加前綴或後綴,或較長不容易重複的名字。同名的資源文件只會存在一個,根據庫的嵌套關係,外層會覆蓋內層的資源文件。






發佈了50 篇原創文章 · 獲贊 22 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章