2-向項目添加組件


打開項目的 build.gradle 文件(而不是應用或模塊的該文件)並添加 google() 代碼庫,如下所示:

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

聲明依賴項

Futures(可在 androidx.concurrent 中找到)

要添加 Futures 的依賴項,您必須將 Google Maven 代碼庫添加到項目中。請閱讀 Google 的 Maven 代碼庫瞭解詳情。

在頂級build.gradle文件中

allprojects {
        repositories {
            google()

            // If you're using a version of Gradle lower than 4.1, you must instead use:
            // maven {
            //     url 'https://maven.google.com'
            // }
            // An alternative URL is 'https://dl.google.com/dl/android/maven2/'
        }
    }

在應用或模塊的 build.gradle 文件中添加所需工件的依賴項:

    dependencies {
        implementation "androidx.concurrent:concurrent-futures:1.0.0"

        // Kotlin
        implementation "androidx.concurrent:concurrent-futures-ktx:1.1.0-alpha01"
    }
    

生命週期組件(包括 ViewModel)

    dependencies {
        def lifecycle_version = "2.2.0"
        def arch_version = "2.1.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        kapt "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-ktx:$lifecycle_version"

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

導航(包括 SafeArgs)

導航

    dependencies {
      def nav_version = "2.3.0-alpha01"

      // Java language implementation
      implementation "androidx.navigation:navigation-fragment:$nav_version"
      implementation "androidx.navigation:navigation-ui:$nav_version"

      // Kotlin
      implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
      implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

      // Dynamic Feature Module Support
      implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

      // Testing Navigation
      androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"
    }
    

Safe Args

在頂級 build.gradle 文件中包含以下 classpath

    buildscript {
        repositories {
            google()
        }
        dependencies {
            def nav_version = "2.3.0-alpha01"
            classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
        }
    }
//For Java
apply plugin: "androidx.navigation.safeargs"

//For kotlin
apply plugin: "androidx.navigation.safeargs.kotlin"

Paging

    dependencies {
      def paging_version = "2.1.1"
			
      // For Kotlin use paging-runtime-ktx
      implementation "androidx.paging:paging-runtime:$paging_version" 

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

      // optional - RxJava support
      // For Kotlin use paging-rxjava2-ktx
      implementation "androidx.paging:paging-rxjava2:$paging_version" 
    }
    

Room

    dependencies {
      def room_version = "2.2.3"

      implementation "androidx.room:room-runtime:$room_version"
      // For Kotlin use kapt instead of annotationProcessor
      annotationProcessor "androidx.room:room-compiler:$room_version" 

      // optional - Kotlin Extensions and Coroutines support for Room
      implementation "androidx.room:room-ktx:$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"
    }
    

備註:

Room 具有以下注釋處理器選項:

room.schemaLocation:配置並啓用將數據庫架構導出到給定目錄中的 JSON 文件的功能。如需瞭解詳情,請參閱 Room 遷移。
room.incremental:啓用 Gradle 增量註釋處理器。
room.expandProjection:配置 Room 以重新編寫查詢,使其頂部星形投影在展開後僅包含 DAO 方法返回類型中定義的列。

示例如下

    android {
        ...
        defaultConfig {
            ...
            javaCompileOptions {
                annotationProcessorOptions {
                    arguments = [
                        "room.schemaLocation":"$projectDir/schemas".toString(),
                        "room.incremental":"true",
                        "room.expandProjection":"true"]
                }
            }
        }
    }

WorkManager

    dependencies {
      def work_version = "2.3.1"

        // (Java only)
        implementation "androidx.work:work-runtime:$work_version"

        // Kotlin + coroutines
        implementation "androidx.work:work-runtime-ktx:$work_version"

        // optional - RxJava2 support
        implementation "androidx.work:work-rxjava2:$work_version"

        // optional - GCMNetworkManager support
        implementation "androidx.work:work-gcm:$work_version"

        // optional - Test helpers
        androidTestImplementation "androidx.work:work-testing:$work_version"
      }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章