在項目的發(fā)展過程中膘螟,可能需要不斷地引入新的第三方包笙僚,通常都是aar的形式。當項目不斷地擴展灵再,aar越來越多肋层,會發(fā)現維護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內加入引用路徑
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。文件內容如下
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",
????]
? ? //轉換成引用對象
? ??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文件是复。文件內容如下:
def aarFolderName ='libs'
repositories {
????flatDir {
????????dirs aarFolderName// aar目錄
? ? }
}
dependencies {
????def aarNativeBat= {
? ? ? ? //查找目錄下所有.aar結尾的文件
????????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工程地址旗闽,通過代碼更容易理解。