官术网_书友最值得收藏!

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

主站蜘蛛池模板: 阿克苏市| 新泰市| 休宁县| 防城港市| 广元市| 淮滨县| 南汇区| 尼勒克县| 申扎县| 蒙城县| 麦盖提县| 鄢陵县| 彭阳县| 鹤山市| 衡水市| 贵港市| 闸北区| 礼泉县| 郯城县| 唐海县| 安庆市| 砚山县| 崇明县| 婺源县| 云南省| 竹北市| 淄博市| 固阳县| 兴化市| 兖州市| 遂平县| 德江县| 玛多县| 乐至县| 尼勒克县| 中宁县| 周至县| 巴楚县| 祁连县| 东辽县| 普陀区|