欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

創(chuàng)建Android庫(kù)的方法及Android .aar文件用法小結(jié)

 更新時(shí)間:2017年12月07日 08:59:34   作者:code小生_  
本文給大家介紹了創(chuàng)建Android庫(kù)的方法及Android中 .aar文件生成方法與用法詳解,涉及到創(chuàng)建庫(kù)模塊操作步驟及開(kāi)發(fā)注意事項(xiàng),需要的朋友參考下吧

創(chuàng)建 Android 庫(kù)

Android 庫(kù)在結(jié)構(gòu)上與 Android 應(yīng)用模塊相同。它可以提供構(gòu)建應(yīng)用所需的一切內(nèi)容,包括源代碼、資源文件和 Android 清單。不過(guò),Android 庫(kù)將編譯到您可以用作 Android 應(yīng)用模塊依賴(lài)項(xiàng)的 Android 歸檔 (AAR:Android Archive Resource) 文件,而不是在設(shè)備上運(yùn)行的 APK。與 JAR 文件不同,AAR 文件可以包含 Android 資源和一個(gè)清單文件,這樣,除了 Java 類(lèi)與方法外,您還可以捆綁布局和可繪制對(duì)象等共享資源。

庫(kù)模塊在以下情況下非常有用:

  • 構(gòu)建使用某些相同組件(例如 Activity、服務(wù)或 UI 布局)的多個(gè)應(yīng)用。
  • 構(gòu)建存在多個(gè) APK 變體(例如免費(fèi)版本和付費(fèi)版本)的應(yīng)用并且需要在兩種版本中使用相同的核心組件。

在任何一種情況下,只需要將您希望重用的文件移動(dòng)到庫(kù)模塊中,然后以依賴(lài)項(xiàng)的形式為每個(gè)應(yīng)用模塊添加庫(kù)。本頁(yè)面將說(shuō)明如何執(zhí)行這兩個(gè)操作。

創(chuàng)建庫(kù)模塊

要在您的項(xiàng)目中創(chuàng)建一個(gè)新的庫(kù)模塊,請(qǐng)按以下步驟操作:

1、點(diǎn)擊 File > New > New Module。

2、在出現(xiàn)的 Create New Module 窗口中,依次點(diǎn)擊 Android Library 和 Next。還存在一個(gè)用于創(chuàng)建 Java 庫(kù)的選項(xiàng),可以構(gòu)建傳統(tǒng)的 JAR 文件。盡管 JAR 文件在大多數(shù)項(xiàng)目中都非常實(shí)用(尤其在您希望與其他平臺(tái)共享代碼時(shí)),但這種文件不允許您包含 Android 資源或清單文件,而后者對(duì)于 Android 項(xiàng)目中的代碼重用非常有用。因此,本指南將側(cè)重論述創(chuàng)建 Android 庫(kù)。

3、為您的庫(kù)命名,并為庫(kù)中代碼選擇一個(gè)最低的 SDK 版本,然后點(diǎn)擊 Finish。

在 Gradle 項(xiàng)目同步完成后,庫(kù)模塊將顯示左側(cè)的 Project 面板中。如果您未看到新模塊文件夾,請(qǐng)確保將視圖切換為 Android 視圖。

將應(yīng)用模塊轉(zhuǎn)換為庫(kù)模塊

如果您現(xiàn)有的應(yīng)用模塊包含您希望重用的所有代碼,則可以按照以下步驟將其轉(zhuǎn)換為庫(kù)模塊:

1、打開(kāi)現(xiàn)有應(yīng)用模塊的 build.gradle 文件。您應(yīng)在頂部看到以下內(nèi)容:

apply plugin: 'com.android.application'

2、按照下面所示更改插件分配:

apply plugin: 'com.android.library'

3、點(diǎn)擊 Sync Project with Gradle Files。

就這么簡(jiǎn)單。模塊的整個(gè)結(jié)構(gòu)仍然相同,但是現(xiàn)在它將作為 Android 庫(kù)運(yùn)行,構(gòu)建也將創(chuàng)建一個(gè) AAR 文件,而不是 APK。

生成aar

在Android Studio1.4中,New project,先默認(rèn)新建一個(gè)Applicaton module,接后File > New > New Module,選擇Androd Library > Next,指定Library Name和Module Name。

新建的Library與正常的Application最大區(qū)別是module build.gradle中是apply plugin: ‘com.android.library' 而不是 apply plugin: 'com.android.application'

Build > Make project,自動(dòng)生成aar文件。

以依賴(lài)項(xiàng)形式添加您的庫(kù)

要在另一個(gè)應(yīng)用模塊中使用您的 Android 庫(kù)的代碼,請(qǐng)按以下步驟操作:

1、通過(guò)兩種方式之一將庫(kù)添加到您的項(xiàng)目(如果您是在相同項(xiàng)目中創(chuàng)建的庫(kù)模塊,則該模塊已經(jīng)存在,您可以跳過(guò)此步驟):

添加已編譯的 AAR(或 JAR)文件:

1、點(diǎn)擊 File > New Module。

2、依次點(diǎn)擊 Import .JAR/.AAR Package 和 Next。

3、輸入 AAR 或 JAR 文件的位置,然后點(diǎn)擊 Finish。

將庫(kù)模塊導(dǎo)入到您的項(xiàng)目中:

1、點(diǎn)擊 File > New > Import Module。

2、輸入庫(kù)模塊目錄的位置,然后點(diǎn)擊 Finish。

庫(kù)模塊將復(fù)制到您的項(xiàng)目中,因此您可以盡管編輯庫(kù)代碼。如果您希望維護(hù)一個(gè)版本的庫(kù)代碼,則此方法可能不是您想要的,您應(yīng)按照上文所述導(dǎo)入編譯的 AAR 文件。

2、確保庫(kù)列在您 settings.gradle 文件的頂部,如下面名為“my-library-module”的庫(kù)所示:

include ':app', ':my-library-module'

3、打開(kāi)應(yīng)用模塊的 build.gradle 文件,并向 dependencies 塊中添加一行新代碼,如下面的片段所示:

dependencies {
 compile project(":my-library-module")
}

4、點(diǎn)擊 Sync Project with Gradle Files。

在上面的示例中,名為 my-library- module 的 Android 庫(kù)模塊成為 build.gradle 文件所在模塊的構(gòu)建依賴(lài)項(xiàng)。

您的應(yīng)用模塊現(xiàn)在可以訪問(wèn) Android 庫(kù)中的任何代碼和資源,庫(kù) AAR 文件在構(gòu)建時(shí)已捆綁到您的 APK 中。

不過(guò),如果希望單獨(dú)共享 AAR 文件,則可以在 項(xiàng)目名稱(chēng)/模塊名稱(chēng)/build/outputs/aar/ 中找到它,也可以通過(guò)點(diǎn)擊 Build > Make Project 的方式重新生成此文件。

選擇要設(shè)為公開(kāi)的資源

庫(kù)中的所有資源在默認(rèn)情況下均處于公開(kāi)狀態(tài)。要將所有資源隱式設(shè)為私有,您必須至少將一個(gè)特定的屬性定義為公開(kāi)。資源包括您項(xiàng)目的 res/ 目錄中的所有文件,例如圖像。要阻止您的庫(kù)用戶訪問(wèn)僅供內(nèi)部使用的資源,您應(yīng)通過(guò)聲明一個(gè)或多個(gè)公開(kāi)資源的方式來(lái)使用這種自動(dòng)私有標(biāo)識(shí)機(jī)制。

要?jiǎng)h除某個(gè)公開(kāi)資源,請(qǐng)將一個(gè)聲明添加到您的庫(kù)的 public.xml文件中。如果您之前尚未添加公開(kāi)資源,則需要在您的庫(kù)的 res/values/目錄中創(chuàng)建public.xml 文件。

下面的示例代碼可以創(chuàng)建兩個(gè)名稱(chēng)分別為 mylib_app_name和 mylib_public_string 的公開(kāi)字符串資源:

<resources>
 <public name="mylib_app_name" type="string"/>
 <public name="mylib_public_string" type="string"/>
</resources>

如果希望任何資源保持對(duì)使用您的庫(kù)的開(kāi)發(fā)者可見(jiàn),您應(yīng)當(dāng)將其設(shè)為公開(kāi)。例如,盡管 v7 appcompat 庫(kù)中的大多數(shù)資源都是私有資源,但是為了支持Material Design,控制工具欄小部件的屬性應(yīng)當(dāng)公開(kāi)。

將屬性隱式設(shè)為私有不僅可以阻止您的庫(kù)用戶從內(nèi)部庫(kù)資源獲得代碼自動(dòng)完成建議,還讓您能夠在不中斷您的庫(kù)客戶端的情況下重命名或移除私有資源。私有資源不在代碼自動(dòng)完成和 Theme Editor 的作用范圍內(nèi),并且如果您嘗試引用私有資源,Lint 將顯示警告。

開(kāi)發(fā)注意事項(xiàng)

在開(kāi)發(fā)您的庫(kù)模塊和相關(guān)應(yīng)用時(shí),請(qǐng)注意以下行為和限制。

將庫(kù)模塊引用添加至您的 Android 應(yīng)用模塊后,您可以設(shè)置它們的相對(duì)優(yōu)先級(jí)。構(gòu)建時(shí),庫(kù)會(huì)按照一次一個(gè)的方式與應(yīng)用合并,并按照從低到高的優(yōu)先級(jí)順序。

資源合并沖突

構(gòu)建工具會(huì)將庫(kù)模塊中的資源與相關(guān)應(yīng)用模塊的資源合并。如果在兩個(gè)模塊中均定義了給定資源 ID,將使用應(yīng)用中的資源。

如果多個(gè) AAR 庫(kù)之間發(fā)生沖突,將使用依賴(lài)項(xiàng)列表首先列出(位于 dependencies塊頂部)的庫(kù)中的資源。

為了避免常用資源 ID 的資源沖突,請(qǐng)使用在模塊(或在所有項(xiàng)目模塊)中具有唯一性的前綴或其他一致的命名方案。

庫(kù)模塊可以包含 JAR 庫(kù)

您可以開(kāi)發(fā)一個(gè)自身包含 JAR 庫(kù)的庫(kù)模塊;不過(guò),您需要手動(dòng)編輯相關(guān)應(yīng)用模塊的構(gòu)建路徑,并添加 JAR 文件的路徑。

庫(kù)模塊可以依賴(lài)外部 JAR 庫(kù)

您可以開(kāi)發(fā)一個(gè)依賴(lài)于外部庫(kù)(例如 Maps 外部庫(kù))的庫(kù)模塊。在這種情況下,相關(guān)應(yīng)用必須針對(duì)包含外部庫(kù)(例如 Google API 插件)的目標(biāo)構(gòu)建。另外也要注意,庫(kù)模塊和相關(guān)應(yīng)用都必須在其清單文件的 <uses- library> 元素中聲明外部庫(kù)。

庫(kù)模塊不得包含原始資源

工具不支持在庫(kù)模塊中使用原始資源文件(保存在 assets/目錄中)。應(yīng)用使用的任何原始資源都必須存儲(chǔ)在應(yīng)用模塊自身的 assets/目錄中。

應(yīng)用模塊的 minSdkVersion必須大于或等于庫(kù)定義的版本

庫(kù)作為相關(guān)應(yīng)用模塊的一部分編譯,因此,庫(kù)模塊中使用的 API 必須與應(yīng)用模塊支持的平臺(tái)版本兼容。

每個(gè)庫(kù)模塊都會(huì)創(chuàng)建自己的 R 類(lèi)

在您構(gòu)建相關(guān)應(yīng)用模塊時(shí),庫(kù)模塊將先編譯到 AAR 文件中,然后再添加到應(yīng)用模塊中。因此,每個(gè)庫(kù)都有其自己的 R 類(lèi),并根據(jù)庫(kù)的軟件包名稱(chēng)命名。從主模塊和庫(kù)模塊生成的 R 類(lèi)會(huì)在所需的所有軟件包(包括主模塊的軟件包和庫(kù)的軟件包)中創(chuàng)建。

庫(kù)模塊可能包含自己的 ProGuard 配置文件

通過(guò)將 ProGuard 配置文件添加到包含其 ProGuard 指令的庫(kù),您可以在自己的庫(kù)上啟用代碼壓縮。構(gòu)建工具會(huì)為庫(kù)模塊將此文件嵌入到生成的 AAR 文件中。在您將庫(kù)添加到應(yīng)用模塊時(shí),庫(kù)的 ProGuard 文件將附加至應(yīng)用模塊的 ProGuard 配置文件 (proguard.txt)。

通過(guò)將 ProGuard 文件嵌入到您的庫(kù)模塊中,您可以確保依賴(lài)于此庫(kù)的應(yīng)用模塊不必手動(dòng)更新其 ProGuard 文件即可使用庫(kù)。當(dāng) ProGuard 在 Android 應(yīng)用模塊上運(yùn)行時(shí),它會(huì)同時(shí)使用來(lái)自應(yīng)用模塊和庫(kù)的指令,因此您不應(yīng)當(dāng)只在庫(kù)上運(yùn)行 ProGuard。

要指定您的庫(kù)的配置文件名稱(chēng),請(qǐng)將其添加到 consumerProguardFiles方法中,此方法位于您的庫(kù)的 build.gradle文件的 defaultConfig塊內(nèi)。例如,以下片段會(huì)將 lib-proguard-rules.txt設(shè)置為庫(kù)的 ProGuard 配置文件:

android {
 defaultConfig {
 consumerProguardFiles 'lib-proguard-rules.txt'
 }
 ...
}

默認(rèn)情況下,應(yīng)用模塊會(huì)使用庫(kù)的發(fā)布構(gòu)建,即使在使用應(yīng)用模塊的調(diào)試構(gòu)建類(lèi)型時(shí)亦是如此。要使用庫(kù)中不同的構(gòu)建類(lèi)型,您必須將依賴(lài)項(xiàng)添加到應(yīng)用的 build.gradle文件的 dependencies塊中,并在庫(kù)的 build.gradle文件中將 publishNonDefault設(shè)置為 true。例如,您應(yīng)用的 build.gradle文件中的以下代碼段會(huì)使應(yīng)用在應(yīng)用模塊于調(diào)試模式下構(gòu)建時(shí)使用庫(kù)的調(diào)試構(gòu)建類(lèi)型,以及在應(yīng)用模塊于發(fā)布模式下構(gòu)建時(shí)使用庫(kù)的發(fā)布構(gòu)建類(lèi)型:

dependencies {
 debugCompile project(path: ':library', configuration: 'debug')
 releaseCompile project(path: ':library', configuration: 'release')
}

您還必須在自己庫(kù)的 build.gradle文件的 android 塊內(nèi)添加以下代碼行,以便將此庫(kù)的非發(fā)布配置展示給使用它的項(xiàng)目:

android {
 ...
 publishNonDefault true
}

不過(guò)請(qǐng)注意,設(shè)置 publishNonDefault會(huì)增加構(gòu)建時(shí)間。

為了確保您的庫(kù)的 ProGuard 規(guī)則不會(huì)將意外的壓縮副作用施加到應(yīng)用模塊,請(qǐng)僅包含適當(dāng)規(guī)則,停用不適用于此庫(kù)的 ProGuard 功能。嘗試協(xié)助開(kāi)發(fā)者的規(guī)則可能會(huì)與應(yīng)用模塊或它的其他庫(kù)中的現(xiàn)有代碼沖突,因此不應(yīng)包含這些規(guī)則。例如,您的庫(kù)的 ProGuard 文件可以指定在應(yīng)用模塊的壓縮期間需要保留的代碼。

注:Jack 工具鏈僅支持 ProGuard 的部分壓縮和模糊選項(xiàng)。

AAR 文件詳解

AAR 文件的文件擴(kuò)展名為 .aar,Maven 工件類(lèi)型也應(yīng)當(dāng)是 aar。文件本身是一個(gè)包含以下強(qiáng)制性條目的 zip文件:

/AndroidManifest.xml

/classes.jar

/res/

/R.txt

此外,AAR 文件可能包含以下可選條目中的一個(gè)或多個(gè):

/assets/

/libs/名稱(chēng) .jar

/jni/abi 名稱(chēng) /名稱(chēng).so(其中 abi 名稱(chēng)是 Android 支持的 ABI 之一)

/proguard.txt

/lint.jar

下面給大家介紹下Android 中.aar文件生成方法與用法

前言

無(wú)論是用Eclipse還是用Android Studio做android開(kāi)發(fā),都會(huì)接觸到j(luò)ar包,全稱(chēng)應(yīng)該是:Java Archive,即java歸檔文件。

在用AS的過(guò)程中,你會(huì)發(fā)現(xiàn)有aar這么個(gè)東西,經(jīng)查閱資料了解到,aar是android歸檔文件,我想全稱(chēng)應(yīng)該是:Android Archive。

他們兩個(gè)有什么區(qū)別呢?

個(gè)人理解:

jar是java文件編譯后的class文件壓縮包。

aar是android module中所有resource文件和編譯后的java文件的總壓縮包。

區(qū)別在于:aar除了包含class文件,還包含resource文件。

在Android Studio中如何引入aar文件呢?

拿RecyclerView的aar文件為例。

1、找到aar文件:..\Android_SDK_Windows\extras\android\m2repository\com\android\support\recyclerview-v7\24.0.0\recyclerview-v7-24.0.0.aar

 copy到Android Studio項(xiàng)目中的libs目錄下。

2、然后在Android Studio對(duì)應(yīng)的module的build.gradle文件中輸入一下內(nèi)容:

dependencies {
 ...
 compile(name:'recyclerview-v7-24.0.0',ext:'aar')
}
repositories {
 flatDir {
 dirs 'libs'
 }
}

3、然后重新build下整個(gè)項(xiàng)目即可。

在Android Studio中如何把某一個(gè)module導(dǎo)出為aar文件呢?

以testlibrary為例:

1、執(zhí)行對(duì)應(yīng)module的assembleRelease命令:

上圖切記,如果是項(xiàng)目的主module,即app,則生成的是apk包。

2、在對(duì)應(yīng)module的build\outputs\aar\目錄下即是:

如果想把a(bǔ)ar文件導(dǎo)入到Eclipse中呢?

如圖:把a(bǔ)ar文件用WinRAR等壓縮軟件打開(kāi)后,會(huì)發(fā)現(xiàn)是上面的結(jié)構(gòu),classes.jar即為class文件的jar包,其他的為android相關(guān)的資源文件。

如果你想把導(dǎo)入到Eclipse中,就需要把這里面的所有資源和class文件轉(zhuǎn)換成一個(gè)library工程了。

用Eclipse新建一個(gè)library工程,導(dǎo)入res資源、清單文件和發(fā)編譯后的java文件。

總結(jié)

以上所述是小編給大家介紹的創(chuàng)建Android庫(kù)的方法及Android .aar文件生成方法與用法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android識(shí)別預(yù)裝的第三方App方法實(shí)例

    Android識(shí)別預(yù)裝的第三方App方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Android如何識(shí)別預(yù)裝的第三方App的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Github簡(jiǎn)單易用的?Android?ViewModel?Retrofit框架

    Github簡(jiǎn)單易用的?Android?ViewModel?Retrofit框架

    這篇文章主要介紹了Github簡(jiǎn)單易用的Android?ViewModel?Retrofit框架,RequestViewMode有自動(dòng)對(duì)LiveData進(jìn)行緩存管理,每個(gè)retrofit api接口復(fù)用一個(gè)livedata的優(yōu)勢(shì)。下文具體詳情,感興趣的小伙伴可以參考一下
    2022-06-06
  • Android之自定義實(shí)現(xiàn)BaseAdapter(通用適配器二)

    Android之自定義實(shí)現(xiàn)BaseAdapter(通用適配器二)

    這篇文章主要為大家詳細(xì)介紹了Android之自定義實(shí)現(xiàn)BaseAdapter通用適配器第二篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 使用ListView實(shí)現(xiàn)網(wǎng)上訂餐首頁(yè)

    使用ListView實(shí)現(xiàn)網(wǎng)上訂餐首頁(yè)

    這篇文章主要為大家詳細(xì)介紹了使用ListView實(shí)現(xiàn)網(wǎng)上訂餐首頁(yè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁(yè)面的方式

    Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁(yè)面的方式

    我們?cè)陂_(kāi)發(fā)的時(shí)候,一定會(huì)遇到頁(yè)面跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁(yè)面的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Android 使用VideoView播放MP4的簡(jiǎn)單實(shí)現(xiàn)

    Android 使用VideoView播放MP4的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了Android 使用VideoView播放MP4的簡(jiǎn)單實(shí)現(xiàn),實(shí)現(xiàn)簡(jiǎn)單的播放功能,播放手機(jī)本地的MP4文件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Kotlin編程循環(huán)控制示例詳解

    Kotlin編程循環(huán)控制示例詳解

    這篇文章主要為大家介紹了Kotlin編程循環(huán)控制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Android之線程池ThreadPoolExecutor的簡(jiǎn)介

    Android之線程池ThreadPoolExecutor的簡(jiǎn)介

    今天小編就為大家分享一篇關(guān)于Android之線程池ThreadPoolExecutor的簡(jiǎn)介,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Android集成支付寶支付功能示例

    Android集成支付寶支付功能示例

    本篇文章主要介紹了Android集成支付寶支付功能示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android封裝的http請(qǐng)求實(shí)用工具類(lèi)

    Android封裝的http請(qǐng)求實(shí)用工具類(lèi)

    提供一個(gè)Android封裝的http請(qǐng)求實(shí)用工具類(lèi),在做ANDROID網(wǎng)絡(luò)開(kāi)發(fā)中這個(gè)經(jīng)常要用到,大家可以參考下面的工具類(lèi)修改成自己的工具
    2013-11-11

最新評(píng)論