@author ASCE1885的 Github 簡(jiǎn)書 微博 CSDN 知乎
本文由于潛在的商業(yè)目的,不開放全文轉(zhuǎn)載許可,謝謝粱快!
Android 應(yīng)用開發(fā)中娩梨,經(jīng)常需要將第三方開源函數(shù)庫(kù)作為依賴引入工程中沿腰,通常情況下官方提供的都是在線依賴方式,如下所示是引入 greenDAO 3 的配置:
buildscript {
repositories {
mavenCentral()
}
dependencies {
// greenDAO 所需的 gradle 插件
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
}
}
// 應(yīng)用 greenDAO 插件
apply plugin: 'org.greenrobot.greendao'
dependencies {
// greenDAO 函數(shù)庫(kù)
compile 'org.greenrobot:greendao:3.2.0'
}
可以看到姚建,引入 greenDAO 3 需要下載兩種類型的依賴:
- greenDAO 3 所需的 gradle 插件及其依賴
- 開發(fā)者用到的 greenDAO 3 函數(shù)庫(kù)
如果是個(gè)人開發(fā)矫俺,那么使用這種在線依賴的方式并沒(méi)有什么大問(wèn)題,但如果是團(tuán)隊(duì)開發(fā)掸冤,每個(gè)成員都要在自己電腦上下載一次這些依賴項(xiàng)厘托,如果網(wǎng)速快還好說(shuō),可能只需等個(gè)幾分鐘稿湿,但如果網(wǎng)速比較慢铅匹,有時(shí)需要等上半天,這顯然是降低團(tuán)隊(duì)效率的事饺藤。因此包斑,團(tuán)隊(duì)開發(fā)中,要么搭建私有的 maven 倉(cāng)庫(kù)提高下載速度涕俗,要么直接將在線依賴方式改為離線依賴的方式罗丰,省去下載的耗時(shí)。
為了實(shí)現(xiàn)離線依賴再姑,首先當(dāng)然需要有人將這些依賴下載到本地萌抵,然后上傳到版本控制系統(tǒng)例如 git 中,那么如何下載呢元镀?我們當(dāng)然可以到 maven 倉(cāng)庫(kù)中一個(gè)一個(gè)依賴地去查找并下載绍填,但推薦的方式是走一遍在線依賴下載的方式,讓 gradle 幫我們?nèi)ハ螺d到本地的緩存中栖疑。以 Mac 系統(tǒng)為例讨永,但 gradle 按照在線依賴的配置下載完成后,我們可以在 /Users/你的用戶名/.gradle/caches/modules-2/files-2.
目錄中看到之前下載的所有依賴遇革,如下所示:
根據(jù)依賴的包名卿闹,我們可以找到對(duì)應(yīng)的 jar 包。以 greenDAO 3 為例澳淑,最終我們看到開發(fā)者需要引入工程中的依賴有兩個(gè):
- greendao-3.2.0.jar
- greendao-api-3.2.0.jar
而 greenDAO 3 所需的 gradle 插件及其依賴就有點(diǎn)多了比原,如下所示,可以看到這個(gè)插件使用 Kotlin 編寫的杠巡,插個(gè)題外話量窘,最近很多開源項(xiàng)目中,這種編譯時(shí)注解的處理器很多都改用 Kotlin 編寫氢拥,除了 greenDAO 3蚌铜,新興的 ORM 框架 DBFlow 的注解處理器也是用 Kotlin 編寫的锨侯。
依賴庫(kù)下載完成后,接下來(lái)就要修改配置的方式了冬殃,開發(fā)者用到的 greenDAO 3 函數(shù)庫(kù)的修改很簡(jiǎn)單囚痴,只需將對(duì)應(yīng)的 jar 包拷貝到相應(yīng) Module 的 libs 目錄中,并將 build.gradle 中的
dependencies {
// greenDAO 函數(shù)庫(kù)
compile 'org.greenrobot:greendao:3.2.0'
}
改為如下所示即可:
dependencies {
compile files('libs/greendao-3.2.0.jar') // orm框架
compile files('libs/greendao-api-3.2.0.jar')
}
greenDAO 3 的 gradle 插件的引入审葬,在線方式是在工程的 build.gradle 文件中添加如下配置:
buildscript {
repositories {
mavenCentral()
}
dependencies {
// greenDAO 所需的 gradle 插件
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
}
}
改成離線依賴也很簡(jiǎn)單深滚,修改為指向本地工程目錄即可,下面的配置我們假設(shè)插件及其依賴包放在工程根目錄的 thirdparty/orm/plugin
文件夾中涣觉。
buildscript {
dependencies {
// greenDAO 所需的 gradle 插件
classpath fileTree(include: ['*.jar'], dir: 'thirdparty/orm/plugin')
}
}
本文之所以以 greenDAO 3 為例痴荐,是因?yàn)樗悄壳?Android 開發(fā)中綜合性能較高的一個(gè)框架,如下圖所示:
當(dāng)然官册,greenDAO 雖然性能最高生兆,但 2.x.x 版本使用起來(lái)并不是很方便,需要在項(xiàng)目中單獨(dú)引入一個(gè) Java Module 來(lái)實(shí)現(xiàn)代碼的生成膝宁;在 3.x.x 版本中鸦难,greenDAO 3 使用 gradle 插件的方式來(lái)實(shí)現(xiàn)代碼生成,使用上方便了很多员淫,但存在一個(gè)主要的問(wèn)題是:目前對(duì)于 Android Studio 多 Modules 的支持不夠好合蔽,如果要在多個(gè) Module 中都使用 greenDAO 3 的話,那么每個(gè) Module 需要單獨(dú)建立一個(gè)數(shù)據(jù)庫(kù)介返,不支持同一個(gè)數(shù)據(jù)庫(kù)在不同 Module 之間共用辈末。
我的新書《Android 高級(jí)進(jìn)階》開始正式發(fā)售了,歡迎選購(gòu)映皆!
歡迎關(guān)注我的微信公眾號(hào) ASCE1885,專注與原創(chuàng)或者分享 Android轰枝,iOS捅彻,ReactNative,Web 前端移動(dòng)開發(fā)領(lǐng)域高質(zhì)量文章鞍陨,主要包括業(yè)界最新動(dòng)態(tài)步淹,前沿技術(shù)趨勢(shì),開源函數(shù)庫(kù)與工具等诚撵。