1. 程式人生 > >打包依賴.aar檔案以及坑總結

打包依賴.aar檔案以及坑總結

一、打包aar

1、單個模組打包

  1. 開啟Gradle工具視窗,找到Android Library模組. 在build任務中雙擊assemble.

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

預設DebugReleaseAAR包都會打出來,當然你也可以選擇只打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. appbuild.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 專案中執行是沒有問題的。

    原因:庫裡fragmentlayoutID與專案中另外一個FragmentlayoutID名字相同,導致專案中的佈局會覆蓋庫中的佈局。

    解決:修改為不同的名稱。在庫中要注意資源名稱可能與專案同名的問題,比如在庫中的資原始檔都新增字首或字尾,或較長不容易重複的名字。同名的資原始檔只會存在一個,根據庫的巢狀關係,外層會覆蓋內層的資原始檔。