Android Gradle 批量引用aar

在項目的發(fā)展過程中,可能需要不斷地引入新的第三方包,通常都是aar的形式。當項目不斷地擴展,aar越來越多,會發(fā)現(xiàn)維護aar也是一件麻煩的事。

通常引用第三方aar會有兩種形式,一種是遠程訪問,一種是本地訪問。

Demo工程地址,通過代碼可以更容易理解。

一是通過遠程訪問maven庫地址的形式。需要做兩件事:

第一步在工程的build.gradle中加入庫地址

buildscript {

????repositories {

????????maven {

? ??????????//谷歌粑粑官方的地址是'https://maven.google.com/',一般無法訪問。這里用阿里家的梯子。

????????????url 'https://maven.aliyun.com/repository/google'

? ? ????????name 'google'? ?

? ? ? ? }

}

allprojects {

????repositories {

????????maven {

????????????url 'https://maven.aliyun.com/repository/google'

? ? ? ? ? ? name 'Google'

? ? ? ? }

????}

}

第二步在項目的gradle中進行配置

compile + 空格 + 插件名。

舉例:compile?'com.android.support:support-v4:26.0.0'

Notice:

此處有個小規(guī)范,如果是地址形式直接引用,使用'',也就是英文半角單引號;如果是中間插入版本等變量信息,使用"",英文半角雙引號。


二是引用本地aar包。也是需要做兩件事:

第一步在項目gradle內(nèi)加入引用路徑

repositories {

????flatDir {

? ? ? ? //默認aar本地存放路徑在libs下

????????dirs'libs'

????}

}

第二步在項目gradle中進行配置

compile(name:? 'aar的包名', ext: 'aar')

比如把webp的aar保存在本地,可以通過

compile(name : 'webp-1.0.0', ext: 'aar')的形式配置。


隨著項目的發(fā)展,可能引用的google包越來越多,比如appcompat,desigin,percent等等遠程包。也可能是本地集成第三方項目的aar。如果在同一個gradle中維護,一會兒加個本地的,一會兒加個遠程的,還要進行版本控制,就會看著眼暈。那么在此介紹兩種“集中式”引用aar的方法。

一是遠程aar的集中管理

本地引用的第一步還是不變的。

第二步在工程目錄下,新加一個aar包引用目錄。

創(chuàng)建一個目錄文件,假設取名aarOnline.gradle。文件內(nèi)容如下

ext {

????dependVersion = [??

? ? ? ? //引用的SDK信息,需要更新時,直接修改此處就可以

????????androidSupportSdkVersion:'25.2.0'

????]

? ? supportLibrary? =? [

? ??????support:"com.android.support:support-v4:$dependVersion.androidSupportSdkVersion",

????????//recycleview

????????recycleview:"com.android.support:recyclerview-v7:$dependVersion.androidSupportSdkVersion",

????????//appcompat

????????appcompat:"com.android.support:appcompat-v7:$dependVersion.androidSupportSdkVersion",

????]

? ? //轉(zhuǎn)換成引用對象

? ??supportLibs = supportDeps.values()

}

這樣,如果需要更新引用的support信息,只需要修改androidSupportSdkVersion對應的版本信息即可

第三步在工程的build.gradle中加入引用

在工程的build.gradle(也就是配置引用庫地址的文件)的頭部加入引用文件。

applyfrom: '引用文件名'

舉例:applyfrom: 'aarOnline.gradle'

第四步修改項目build.gradle中的dependencies

將之前的complie '項目名'的引用刪除,修改為:

compile rootProject.ext.引用包組

舉例:compile rootProject.ext.supportLibs 即可。

至此,遠程引用的集中式處理介紹完畢。這樣做有三個好處,一是代碼整潔,二是版本控制方便,三是增刪改查方便。


二是本地aar的集中管理

本地引用的第一步還是不變的。

第二步在工程目錄下,創(chuàng)建一個編譯腳本

腳本的作用是批量處理aar文件。舉例創(chuàng)建一個aarNative.gradle文件。文件內(nèi)容如下:

def aarFolderName ='libs'

repositories {

????flatDir {

????????dirs aarFolderName// aar目錄

? ? }

}

dependencies {

????def aarNativeBat= {

? ? ? ? //查找目錄下所有.aar結(jié)尾的文件

????????fileTree(dir: aarFolderName,include:'*.aar').each { File file ->

? ? ? ? ? ? //獲取文件名

? ? ? ? ? ?def name = file.name.lastIndexOf('.').with {

?????????????????it != -1 ? file.name[0..<it] : file.name }

? ? ? ? ? ?compile(name: name,ext:'aar')

? ? ? ? ? }

????}

? ? //執(zhí)行腳本

????aarNativeBat()

}

第三步在項目的build.gradle中加入引用

只需要在文件頭部加入引用文件即可。

applyfrom: '../引用文件名'

舉例:applyfrom: '../aarNative.gradle'

Notice:需要注意引用路徑。如果腳本在項目目錄下,使用“applyfrom: '引用文件名'”即可。具體情況具體處理。

至此,本地集中引用aar介紹完畢。這樣做的一大好處就是,直接拷貝aar文件即可,不比再擔心版本不一致,版本寫錯的問題,因為不需要維護每個aar了。

Demo工程地址,通過代碼更容易理解。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 說明 本文主要介紹和Gradle關(guān)系密切、相對不容易理解的配置,偏重概念介紹。部分內(nèi)容是Android特有的(例如...
    搬磚的小明閱讀 16,155評論 1 62
  • Gradle配置最佳實踐 本文會不定期更新,推薦watch下項目。如果喜歡請star,如果覺得有紕漏請?zhí)峤籭ssu...
    Solang閱讀 1,763評論 0 4
  • 1、gradle的簡單介紹 Gradle是可以用于Android開發(fā)的新一代的Build System,也是And...
    非著名程序員閱讀 2,602評論 0 4
  • 用法一:常量 Publicenum constant{ RED,BLUE,YELLOW,GREEN,GREY } ...
    小鹿啊小鹿閱讀 273評論 0 0

友情鏈接更多精彩內(nèi)容