項目依賴aar 以及 依賴嵌套aar

一. application 直接依賴 aar(單一依賴)

  1. 拷貝 aar 至 app/libs 目錄
  2. app/build.gradle 添加以下代碼:
    // 根節點下添加 repositories 節點
    repositories {
        flatDir {
        	dirs 'libs'
      	}
    }  
    
    // dependencies節點內添加依賴
    dependencies {
    	 // aar-name 爲 application 要依賴的 aar 包的名稱,不包含後綴。
    	 implementation(name: ‘aar-name’, ext: 'aar')
    }
    

二. application 依賴 library,library 依賴 aar(嵌套依賴)

(library名稱以下用 aarlibs 代替, library內依賴的 子aar 名稱用 sublib 代替)

  1. 拷貝 sublib.aar 至 aarlibs/libs 目錄
  2. aarlibs/build.gradle 添加以下代碼:
    // 根節點下添加 repositories 節點
    repositories {
        flatDir {
        	dirs 'libs'
      	}
    }
    
    // dependencies節點內添加依賴
    dependencies {
    	 implementation(name: ‘sublib’, ext: 'aar')
    }
    
  3. [重點] 此時 aarlibs 作爲 library 有兩種使用方式。
    (1). 作爲 module 被 application 依賴;
    (2). 打包爲新的 aar 被 application 依賴。

下面分別展示兩種依賴方式下 application 的配置(主要是爲了在引用 library 的同時能讓 library 內部的 aar 也生效):

  • 3.1: 作爲 module 被 application 依賴:

    • application/app/build.gradle 添加以下代碼:
      // 根節點下添加 repositories 節點
      repositories {
      	flatDir {
          	dirs project(':aarlibs').file('libs')
       	}
      }
      
      // dependencies節點內添加依賴
      dependencies {
      	implementation project(':aarlibs')
      }
      
  • 3.2: 作爲 aar 被 application 依賴:

    • 將 aarlibs.aar 和 sublib.aar 拷貝至 applicatioon/app/libs目錄。
      雖然 aarlibs/libs 目錄已經包含 sublib.aar 了,但是項目的 libs 裏也需要拷貝一份,否則報錯找不到 sublib.aar 內部的 Class。不過經簡單測試,apk 的體積並不會因爲重複拷貝一份 sublib.aar 而將其大小做 double 算進 apk 體積內。
    • application/app/build.gradle 添加以下代碼:
      // dependencies節點內添加依賴
      dependencies {
      	implementation fileTree(dir: 'libs', include: ['*.aar'])
      }
      
附:清除 aar 緩存
  1. terminal 進入項目根目錄
  2. cd .idea/libraries
  3. rm Gradle__xxxx_aar.xml
  4. AndroidStudio 點擊 左上角 SyncProject 和 SyncFile 按鈕
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章