早在去年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依賴包括LiveData 和ViewModel.
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 migrations 和Room 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"
}