Android 結構組件之Adding Components to your Project

早在去年Architecture Components剛出來的時候霞篡,就簡單的翻譯過這些內容.隔了這么久了阅束,東西也有不少的變化,自己用的也少俩莽,但是看形勢感覺大勢所趨的樣子川梅,因此好好的在學一下疯兼。要學習Architecture Component,的先學會如何使用它贫途,進而才能去理解并深入吧彪。所以現(xiàn)在還是第一個階段——使用階段.本文大部分內容基本都是翻譯。您也可以直接去官網(wǎng)直接看原文丢早。本篇介紹Adding Components姨裸。

1. 添加谷歌Maven倉庫

打開項目根目錄中的build.gradle文件,添加google()如下所示:

allprojects {
    repositories {
        jcenter()
        google()
    }
}

2. 聲明依賴

在你的app或者module中的build.gradle文件中添加組件依賴怨酝。你可以添加所有的依賴或者只是選擇其中的一部分傀缩。

1. AndroidX

后面,此結構組件將作為AndroidX的一部分农猬,現(xiàn)在一些組件的名字在alpha 版本中也已經有些改變赡艰,在下面列出了一些穩(wěn)定的版本。

2. Kotlin

Kotlin的拓展模塊添加幾個依賴關系的標記斤葱,使用-ktx結尾慷垮。例如:
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // use -ktx for Kotlin
替換成
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
小貼士:基于kotlin的app揖闸,應該使用kapt而不是annotationProcessor,需要添加kotlin-kapt插件。

Lifecycle

添加Lifecycle依賴包括LiveDataViewModel.

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // use -ktx for Kotlin
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}

AndroidX

dependencies {
    def lifecycle_version = "2.0.0-alpha1"

    // ViewModel and LiveData
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // use -ktx for Kotlin
    // alternatively - just LiveData
    implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData). Some UI
    //     AndroidX libraries use this lightweight import for Lifecycle
    implementation "androidx.lifecycl:lifecycle-runtime:$lifecycle_version"

    annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
    // alternately - if using Java8, use the following instead of lifecycle-compiler
    implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // use -ktx for Kotlin

    // optional - Test helpers for LiveData
    testImplementation "androidx.arch.core:core-testing:$lifecycle_version"
}

Room

Room的依賴, 包括了 testing Room migrationsRoom RxJava

dependencies {
    def room_version = "1.1.0"

    implementation "android.arch.persistence.room:runtime:$room_version"
    annotationProcessor "android.arch.persistence.room:compiler:$room_version"

    // optional - RxJava support for Room
    implementation "android.arch.persistence.room:rxjava2:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "android.arch.persistence.room:guava:$room_version"

    // Test helpers
    testImplementation "android.arch.persistence.room:testing:$room_version"
}

AndroidX

dependencies {
    def room_version = "2.0.0-alpha1"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // optional - RxJava support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // Test helpers
    testImplementation "androidx.room:room-testing:$room_version"
}

Paging

Paging的依賴

dependencies {
    def paging_version = "1.0.0"

    implementation "android.arch.paging:runtime:$paging_version"

    // alternatively - without Android dependencies for testing
    testImplementation "android.arch.paging:common:$paging_version"

    // optional - RxJava support, currently in alpha
    implementation "android.arch.paging:rxjava2:1.0.0-alpha1"
}

AndroidX

dependencies {
    def paging_version = "2.0.0-alpha1"

    implementation "androidx.paging:paging-runtime:$paging_version"

    // alternatively - without Android dependencies for testing
    testImplementation "androidx.paging:paging-common:$paging_version"

    // optional - RxJava support
    implementation "androidx.paging:paging-rxjava2:$paging_version"
}

Navigation (親測官方給的這個版本不能用)

Navigation依賴,AndroidX的版本還未發(fā)布

dependencies {
    def nav_version = "1.0.0-alpha01"

    implementation 'android.arch.navigation:navigation-fragment:$nav_version' // use -ktx for Kotlin
    implementation 'android.arch.navigation:navigation-ui:$nav_version' // use -ktx for Kotlin

    // optional - Test helpers
    androidTestImplementation 'android.arch.navigation:navigation-testing:$nav_version' // use -ktx for Kotlin
}

Safe args
Safe args, 在你的 top level build.gradle文件中料身,添加 classpath汤纸。

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath "androidx.navigation:safe-args-gradle-plugin:1.0.0-alpha01"
    }
}

在你app或者module的build.gradle文件中
apply plugin: 'androidx.navigation.safeargs'

WorkManager

WorkManager的依賴,AndroidX版本將在以后發(fā)布惯驼。

dependencies {
    def work_version = "1.0.0-alpha01"

    implementation "android.arch.work:work-runtime:$work_version" // use -ktx for Kotlin

    // optional - Firebase JobDispatcher support
    implementation "android.arch.work:work-firebase:$work_version"

    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

歡迎共同探討更多安卓蹲嚣,java递瑰,c/c++相關技術QQ群:392154157

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末祟牲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子抖部,更是在濱河造成了極大的恐慌说贝,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慎颗,死亡現(xiàn)場離奇詭異乡恕,居然都是意外死亡,警方通過查閱死者的電腦和手機俯萎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門傲宜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夫啊,你說我怎么就攤上這事函卒。” “怎么了撇眯?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵报嵌,是天一觀的道長。 經常有香客問我熊榛,道長锚国,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任玄坦,我火速辦了婚禮血筑,結果婚禮上,老公的妹妹穿的比我還像新娘煎楣。我一直安慰自己云挟,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布转质。 她就那樣靜靜地躺著园欣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪休蟹。 梳的紋絲不亂的頭發(fā)上沸枯,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天日矫,我揣著相機與錄音,去河邊找鬼绑榴。 笑死哪轿,一個胖子當著我的面吹牛,可吹牛的內容都是我干的翔怎。 我是一名探鬼主播窃诉,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赤套!你這毒婦竟也來了飘痛?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤容握,失蹤者是張志新(化名)和其女友劉穎宣脉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剔氏,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡塑猖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谈跛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羊苟。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖感憾,靈堂內的尸體忽然破棺而出蜡励,到底是詐尸還是另有隱情,我是刑警寧澤吹菱,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布巍虫,位于F島的核電站,受9級特大地震影響鳍刷,放射性物質發(fā)生泄漏占遥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一输瓜、第九天 我趴在偏房一處隱蔽的房頂上張望瓦胎。 院中可真熱鬧,春花似錦尤揣、人聲如沸搔啊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽负芋。三九已至,卻和暖如春嗜愈,著一層夾襖步出監(jiān)牢的瞬間旧蛾,已是汗流浹背莽龟。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锨天,地道東北人毯盈。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像病袄,于是被迫代替她去往敵國和親搂赋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354