- Android App開發從入門到精通
- 安輝編著
- 1655字
- 2019-07-30 17:30:35
1.6 創建Android庫
Android庫在結構上與Android應用模塊相同。它可以提供構建應用所需的一切內容,包括源代碼、資源文件和Android清單。不過,Android庫將編譯到可以用作Android應用模塊依賴項的Android歸檔(AAR)文件,而不是在設備上運行的APK。與JAR文件不同,AAR文件可以包含Android資源和一個清單文件,這樣除了Java類與方法外,還可以捆綁布局和可繪制對象等共享資源。
庫模塊在以下情況下非常有用:
? 構建使用某些相同組件(例如Activity、服務或UI布局)的多個應用。
? 構建存在多個APK變體(例如免費版本和付費版本)的應用并且需要在兩種版本中使用相同的核心組件。
就像公司有10多個App,可以把所有App都需要用的東西封裝到庫模塊中,例如網絡請求、在線加載圖片等。
這10多個項目都依賴這個庫,而不是10多個項目都寫一遍網絡請求的代碼,并且用庫的方式方便修改。
當訪問網絡的代碼有bug的時候,只需要修改這個庫文件的代碼就好了。
1.6.1 創建庫模塊
要在項目中創建一個新的庫模塊,需要進行以下操作:
步驟01點擊File→New→New Module。
步驟02在出現的Create New Module對話框中,依次點擊Android Library和Next。
提 示
還存在一個用于創建Java庫的選項,可以構建傳統的JAR文件。盡管JAR文件在大多數項目中都非常實用(尤其在希望與其他平臺共享代碼時),但這種文件不允許包含Android資源或清單文件,而后者對于Android項目中的代碼重用非常有用。根據需求決定。
步驟03為你的庫命名,并為庫中代碼選擇一個最低的SDK版本,然后點擊Finish。在Gradle項目同步完成后,庫模塊將顯示在左側的Project面板中。
1.6.2 將庫模塊導入到項目中
有時我們的項目要用別人項目中依賴的庫,手動復制過來太麻煩,Android Studio支持導入庫文件。
步驟01點擊File→New→Import Module。
步驟02選擇庫模塊目錄的位置,然后點擊Finish。
庫模塊的代碼將會復制到你的項目中,也可以修改庫代碼。
1.6.3 將應用模塊轉換為庫模塊
如果希望把應用模塊轉換為庫模塊,可以采用以下步驟:
步驟01打開現有應用模塊的build.gradle文件。在頂部看到以下內容:
apply plugin: 'com.android.application'
步驟02修改成下面這行代碼:
apply plugin: 'com.android.library'
步驟03點擊Sync Project with Gradle Files。
將應用模塊轉換為庫模塊就是這么簡單,只需要修改一行代碼。模塊的結構是一樣的,改了之后構建的是AAR文件,而不是可以運行在手機上的APK文件。
1.6.4 開發庫模塊的注意事項
在開發庫模塊和相關應用時,需要注意以下行為和限制。
將庫模塊引用添加至你的Android應用模塊后,可以設置它們的相對優先級。構建時,庫會按照一次一個的方式與應用合并,并按照從低到高的優先級順序進行。
? 資源合并沖突:構建工具會將庫模塊中的資源與相關應用模塊的資源合并。如果在兩個模塊中均定義了給定資源ID,將使用應用中的資源。
如果多個AAR庫之間發生沖突,將使用依賴項列表首先列出(位于dependencies塊頂部)庫中的資源。
為了避免常用資源ID的資源沖突,請使用在模塊(或在所有項目模塊)中具有唯一性的前綴或其他一致的命名方案。
? 庫模塊可以包含JAR庫:可以開發一個自身包含JAR庫的庫模塊。不過,需要手動編輯相關應用模塊的構建路徑,并添加JAR文件的路徑。
? 庫模塊可以依賴外部JAR庫:可以開發一個依賴于外部庫(例如Maps外部庫)的庫模塊。在這種情況下,相關應用必須針對包含外部庫(例如Google API插件)的目標構建。需要注意的是,庫模塊和相關應用都必須在其清單文件的元素中聲明外部庫。
? 庫模塊不得包含原始資源:工具不支持在庫模塊中使用原始資源文件(保存在assets/目錄中)。應用使用的任何原始資源都必須存儲在應用模塊自身的assets/目錄中。
? 應用模塊的minSdkVersion必須大于或等于庫定義的版本:庫作為相關應用模塊的一部分編譯,因此,庫模塊中使用的API必須與應用模塊支持的平臺版本兼容。
? 每個庫模塊都會創建自己的R類:在構建相關應用模塊時,庫模塊將先編譯到AAR文件中,然后添加到應用模塊中。因此,每個庫都有其自己的R類,并根據庫的軟件包名稱命名。
? 從主模塊和庫模塊生成的R類會在所需的所有軟件包(包括主模塊的軟件包和庫的軟件包)中創建。
1.6.5 AAR文件詳解
AAR文件的文件擴展名為.aar,Maven工件類型也應當是.aar。文件本身是一個包含以下強制性條目的zip文件:
? /AndroidManifest.xml
? /classes.jar
? /res/
? /R.txt
此外,AAR文件可能包含以下可選條目中的一個或多個:
? /assets/
? /libs/名稱.jar
? /jni/abi名稱/名稱.so(其中abi名稱是Android支持的ABI之一)
? /proguard.txt - /lint.jar