Android Studio 打包及引用 aar,androidaar

來源:互聯網
上載者:User

Android Studio 打包及引用 aar,androidaar
Android Studio 打包及引用 aar1、 簡述

        在比較大的 Android 項目的開發中,我們經常會遇到工程、jar 包等等之間相互引用的方式。一般我們通過在 gradle 檔案中配置依賴來解決,比如:

        

Gradle 的一些基本依賴配置方式如下

  • compile fileTree(dir: 'xxx', include: ['*.jar', "*.xxx"]):將某個目錄下所有符合副檔名的檔案作為依賴;
  • compile 'com.xx.xx:ProjectName:Version':配置Maven` 庫作為依賴;在 Maven 庫中心 可以搜尋自己想用的庫進行依賴;
  • compile project(':AnotherModule'):配置另一個 Module 作為本 Module 的依賴,被依賴的 Module 必須被匯入到當前工程中;
  • compile files('xxx.jar'):配置某個 jar 包作為依賴。

        看起來不錯,基本通用的配置都已經存在了。一般對於中等小型的工程,這種開發方式完全沒有問題。但是有時候 A 和 B 兩個工程,想同時引用另一個公用的 Module C,而這個 Module 可能是一個比較複雜的 Android Module,可能包含了一些主題、UI 、資源檔等等,這時候,如果用 Module 依賴的方式來配置,不免有些困難,因為 A 和 B 都要匯入 C,而且要隨時關注 C 的更改。

        好在 Android Studio 提供了 aar 庫的打包方式,我們可以把 C 作為 library 進行打包,輸出 aar 檔案,然後在 A 和 B 中,配置 aar 庫依賴,就可以解決。

2、aar 檔案簡介

        要輸出 aar 檔案,必須將 Module 配置為 library,在 gradle 檔案中如下:

  • 輸出 aar : apply plugin: 'com.android.library'
  • 輸出 apk :apply plugin: 'com.android.application'

        將 Module 配置為 library 後,構建輸出一個 aar 檔案,根據渠道和 BuildType 的不同,在相應的目錄下可以找到。比如對 BuildType 為 debug 的配置,輸出為:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar。一份 aar 檔案其實就是一份 zip 包,和 jar 不同的是,它將一些資源檔、第三方庫檔案、so 檔案等等都打包在內,而代碼檔案編譯後壓縮在在 classes.jar 中。比如:

        

3、匯入 aar 的方式引用

        這種方式比較簡單,開啟 Project Structure,添加一個新 Module,然後選擇 Import *.JAR or *.AAR Package 的方式匯入:

        

        匯入後,在你的工程下面,會產生一個檔案夾,裡面是 aar 檔案以及 Android Studio 的設定檔。

        

        接著可以在 gradle 中配置依賴了,其他 Module 可以引用這個 Module 了,依賴方式使用 compile project 的方式即可。

缺點:被依賴的 aar 無法 F3 跟進去,無法看到資源檔內容以及目錄層級等等缺陷。

4、使用配置依賴的方式引用

        gradle 其實還有另一種依賴可以引用 aar:

  • compile(name: 'xxx', ext: 'aar')

        首先需要將 aar 檔案放入引用 Module 的 libs 目錄下,和一般的 jar 檔案類似。然後在 gradle 設定檔中把 libs 目錄加入依賴:

repositories {    flatDir {        dirs 'libs'    }}

        接著在 gradle 的依賴配置中加入 compile(name: 'xxx', ext: 'aar') 這一句,依賴即可關聯完畢。構建一下工程,在 Module 的 build/intermediates/exploded-aar 目錄下,可以看到有一些臨時檔案產生:

        

        看起來完全是引用 aar 的解壓版本。Android Studio 安裝反編譯外掛程式後,可以通過 F3 跟進到 class 檔案裡面,如果你有被依賴 Module 的原始碼的話,還可以 Attach Source 關聯原始碼查看。另外,可以很方便的查看 aar 中的資源檔。

        另外,這種依賴方式更新 aar 後,產生的臨時檔案也會隨之變動,不用擔心改動不同步的問題。

5、總結

        綜上,介紹了 aar 檔案的產生方式,以及兩種 aar 依賴的方式,經過實戰檢驗,第二種通過配置 gradle 依賴的方式簡單易用,只需一行代碼即可搞定。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.