Android Studio 使用 Gradle 做為生成的工具在 Dependency 的管理上,節(jié)省掉很多煩人的工作,讓引用 Library 變成極為單純的作業(yè),也讓開發(fā)人員可以更專注在重要的事項。如同在“使用 Android Studio 開發(fā) Web 程序 - 設(shè)定共用庫”或這篇中提到,項目透過 Gradle 的功能,要引用 Project 以外的 Library,只要在 build.gradle 中提供 Library 的識別名稱及對應(yīng)版本編號,即可透過預(yù)先配置好的 Repository 來自動取得 jar,不需要再由人工下載、更新。
以下是一個簡易的引用演示:
dependencies {
// http://www.itdecent.cn/u/fea63707e07f
compile 'com.android.support:appcompat-v7:24.2.1'
}
就算是公司內(nèi)部自行開發(fā)的 Library,也能在編譯、輸出 jar 后,上傳到私有的 Repository 中。再經(jīng)由同樣的模式,在 build.gradle 中新增私有 Repository、要引用的 Library 資訊,就可以于 Coding 時使用 Library 中的功能。
例如:
repositories {
maven {
// http://www.itdecent.cn/u/fea63707e07f
url "http://192.168.1.1”
}
}
更多深入的文章請參閱簡書 http://www.itdecent.cn/u/fea63707e07f 或 wznote.blogspot.com
縱使利用 Repository 的形式來管理 Dependency 可以滿足大部份的開發(fā)需求,但仍然有一些情境之下必須要使用獨(dú)立的 jar 來做為 Dependency。像是有一些小型的團(tuán)隊,可能沒有足夠的資源來設(shè)置自己私有的 Repository,可是還是有跨項目共用功能的需求,這時就只能透過 jar 或共用 Android Studio 的 Module 來達(dá)成。
所幸在 Gradle 的設(shè)定中,除了使用 Repository 之外,還提供直接引用 jar 的配置方法。在 Android Studio 預(yù)設(shè)產(chǎn)生的 build.gradle 中都會有以下的內(nèi)容:
dependencies {
// http://www.itdecent.cn/u/fea63707e07f
compile fileTree(include: ['*.jar'], dir: 'libs')
}
這個內(nèi)容代表了只要把 jar 的文件放到 Project 結(jié)構(gòu)中名為 libs 的目錄下,在 Coding 時就可以直接使用 jar 內(nèi)提供的功能。
只是光這樣還是會有一些不足之處,若是以開發(fā)為業(yè),勢必不可能只有一個 Project。團(tuán)隊內(nèi)部共用的 jar 在每開一個 Project 就要再復(fù)制一份到其下的 libs 目錄中,似乎不是一個好的 Dependency 管理模式,而把 jar 集中在所有項目之外的需求就應(yīng)運(yùn)而生。
這時就出現(xiàn)了一個疑問,原先的配置只有把 jar 放在 Project 內(nèi)的 libs 之下,在 Project 之外的 jar 要如何設(shè)定 Dependency?
面對這一個問題,其實解決的方法也很簡單。之前 build.gradle 的例子中,dir: 'libs' 代表的是相對于 Project 的位置,也就是在 Project 之下的 libs 路徑。當(dāng) jar 在 Project 之外時,只要調(diào)整內(nèi)容為 Project 之上的路徑即可。
dependencies {
// http://www.itdecent.cn/u/fea63707e07f
compile fileTree(include: ['*.jar'], dir: ‘../../shared’)
}
以上面的例子來說,是假定所有的共用 jar 都被放在與 Project 平行的 shared 路徑之下,以下是目錄結(jié)構(gòu)的示意:
+ Project A
+ app
+ libs
+ src
+ androidTest
+ main
+ test
+ Project B
+ app
+ libs
+ src
+ androidTest
+ main
+ test
+ shared
- *.jar
透過以上的方式,就可以達(dá)成類似 Repository 的效果,當(dāng) shared 內(nèi)的 jar 被更新后,Project A 與 Project B 都可以在 Source Code 中使用最新的功能。而當(dāng)這二個 Project 所使用的 jar 有版本不一致的情況時,只要分別把對應(yīng)版本的 jar 放到所屬 Project 的 libs 路徑下即可。
更多深入的文章請參閱簡書 http://www.itdecent.cn/u/fea63707e07f 或 wznote.blogspot.com