Android Studio 實(shí)現(xiàn)開源函數(shù)庫(kù)的離線依賴-greenDAO 3 為例

@author ASCE1885的 Github 簡(jiǎn)書 微博 CSDN 知乎
本文由于潛在的商業(yè)目的,不開放全文轉(zhuǎn)載許可,謝謝粱快!

nami.png-599.1kB
nami.png-599.1kB

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. 目錄中看到之前下載的所有依賴遇革,如下所示:

image_1b0ierpic128a1baa1lru10hu9fd9.png-155kB
image_1b0ierpic128a1baa1lru10hu9fd9.png-155kB

根據(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 編寫的锨侯。

image_1b0i79k4a1e5d1shmk3fsm31dva16.png-127.3kB
image_1b0i79k4a1e5d1shmk3fsm31dva16.png-127.3kB

依賴庫(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è)框架,如下圖所示:

image_1b0i70rjlhs112251hdv17fshot9.png-39.5kB
image_1b0i70rjlhs112251hdv17fshot9.png-39.5kB

當(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ù)與工具等诚撵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缭裆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子寿烟,更是在濱河造成了極大的恐慌澈驼,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筛武,死亡現(xiàn)場(chǎng)離奇詭異缝其,居然都是意外死亡挎塌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門内边,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榴都,“玉大人,你說(shuō)我怎么就攤上這事漠其∽旄撸” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵和屎,是天一觀的道長(zhǎng)拴驮。 經(jīng)常有香客問(wèn)我,道長(zhǎng)眶俩,這世上最難降的妖魔是什么莹汤? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮颠印,結(jié)果婚禮上纲岭,老公的妹妹穿的比我還像新娘。我一直安慰自己线罕,他們只是感情好止潮,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钞楼,像睡著了一般喇闸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上询件,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天燃乍,我揣著相機(jī)與錄音,去河邊找鬼宛琅。 笑死刻蟹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘿辟。 我是一名探鬼主播舆瘪,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼红伦!你這毒婦竟也來(lái)了英古?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昙读,失蹤者是張志新(化名)和其女友劉穎召调,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡某残,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年国撵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玻墅。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡介牙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澳厢,到底是詐尸還是另有隱情环础,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布剩拢,位于F島的核電站线得,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏徐伐。R本人自食惡果不足惜贯钩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望办素。 院中可真熱鬧角雷,春花似錦、人聲如沸性穿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)需曾。三九已至吗坚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呆万,已是汗流浹背商源。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谋减,地道東北人炊汹。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像逃顶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子充甚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容