【问题标题】:How to import Room Persistence Library to an Android project如何将 Room Persistence Library 导入 Android 项目
【发布时间】:2017-10-18 05:11:21
【问题描述】:

我最近在 Google I/O Room Persistence Library 上看到了一项新功能,可以与 Android 上的 Sqlite 数据库一起使用。我一直在寻找official documentation,但我没有找到应该将哪些依赖项导入到我的 Android 项目的 gradle 文件中。有人可以帮帮我吗?

【问题讨论】:

    标签: android sqlite android-sqlite android-room


    【解决方案1】:

    可以在the example codelab 上找到新架构组件的依赖关系。

    根:

    allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
    

    房间:

      implementation 'android.arch.persistence.room:runtime:1.0.0-alpha1'
      annotationProcessor 'android.arch.persistence.room:compiler:1.0.0-alpha1'
    

    对于生命周期依赖项:

      implementation 'android.arch.lifecycle:extensions:1.0.0-alpha1'
      annotationProcessor 'android.arch.lifecycle:compiler:1.0.0-alpha1'
    

    添加 Rxjava2 对象作为我们查询的结果:

      implementation 'android.arch.persistence.room:rxjava2:1.0.0-alpha1'
    

    测试迁移:

      testImplementation'android.arch.persistence.room:testing:1.0.0-alpha1'
    

    【讨论】:

      【解决方案2】:

      试试这个编译 Room Persistence 库

      implementation 'android.arch.persistence.room:runtime:1.1.1';
      annotationProcessor 'android.arch.persistence.room:compiler:1.1.1';
      

      并将其添加到根级构建 gradle 中

      allprojects {
      repositories {
          jcenter()
          maven {
              url "https://maven.google.com"
          }
      }
      

      【讨论】:

        【解决方案3】:

        在您的项目 root build.gradle 上,您必须添加 Google 的 maven 存储库:

        allprojects {
            repositories {
                jcenter()
                maven {
                    // For Room Persistence Library
                    url "https://maven.google.com"
                }
            }
        }
        

        然后在 Modulebuild.gradle 上添加:

        compile 'android.arch.persistence.room:runtime:1.0.0-alpha1'
        annotationProcessor 'android.arch.persistence.room:compiler:1.0.0-alpha1'
        compile 'android.arch.lifecycle:extensions:1.0.0-alpha1'
        annotationProcessor 'android.arch.lifecycle:compiler:1.0.0-alpha1'
        compile 'android.arch.persistence.room:rxjava2:1.0.0-alpha1'
        testCompile'android.arch.persistence.room:testing:1.0.0-alpha1'
        

        如果您想在查询结果中使用 RxJava2 PublisherFlowable 对象,请添加此项

        compile 'android.arch.persistence.room:rxjava2:1.0.0-alpha1'
        

        最后还要将此依赖项添加到测试迁移

        testCompile'android.arch.persistence.room:testing:1.0.0-alpha1'
        

        更新:库仍然标记为Alpha1,所以我猜版本号很快就会更新,可能会使用1.0.+,直到出现final 版本可能是个好主意 已经更新,as definded on the documentation 您可以使用 room 1.1.1 使用此依赖项:

        dependencies {
           def room_version = "1.1.1"
        
           implementation "android.arch.persistence.room:runtime:$room_version"
           annotationProcessor "android.arch.persistence.room:compiler:$room_version" // use kapt for Kotlin
        
           // 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"
        }
        

        【讨论】:

        • 我有一个使用 Room 的模块。该模块是一个java库。我添加了依赖项,但在使用 Gradle 文件的同步项目中出现以下错误找不到 org.gradle.api.internal 类型对象的参数 [android.arch.persistence.room:compiler:1.1.1] 的方法 annotationProcessor() .artifacts.dsl.dependencies.DefaultDependencyHandler。那么将 Room 与 Java 库一起使用会不会有问题?
        • 遇到同样的问题
        • 好吧,我的问题是我把东西放在了错误的 build.gradle 文件中。请参阅@live-love 的答案以获得另一个好的解决方案。
        【解决方案4】:

        Android doc:

        添加 Google Maven 代码库 默认情况下,Android Studio 项目未配置为访问此存储库。

        要将其添加到您的项目中,请打开您的项目的 build.gradle 文件(而不是您的应用或模块的文件)并添加突出显示的行,如下所示:

        allprojects {
        repositories {
            jcenter()
            maven { url 'https://maven.google.com' }
            }
        }
        

        添加架构组件

        为您的应用或模块打开 build.gradle 文件并添加您需要的工件作为依赖项:

        对于 Lifecycles、LiveData 和 ViewModel,添加:

        implementation "android.arch.lifecycle:runtime:1.0.0-alpha1"
        implementation "android.arch.lifecycle:extensions:1.0.0-alpha1"
        annotationProcessor "android.arch.lifecycle:compiler:1.0.0-alpha1"
        

        对于房间,添加:

        implementation "android.arch.persistence.room:runtime:1.0.0-alpha1"
        annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha1"
        

        【讨论】:

          【解决方案5】:

          你的项目(不是你的应用或模块的)打开build.gradle文件并添加:

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

          您的应用或模块打开 build.gradle 文件并添加您需要的工件作为依赖项:

          dependencies {
          
              implementation "android.arch.persistence.room:runtime:1.0.0"
              annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
          
          }
          

          参考:Android Adding Components

          【讨论】:

            【解决方案6】:
                * Add these in project level gradle
            
                allprojects {
                    repositories {
                        jcenter()
                        maven { url 'https://maven.google.com' }
                    }
                }
            
            
                ext {
                    buildToolsVersion = "25.0.2"
                    supportLibVersion = "25.3.1"
                    archRoomVersion = "1.0.0-alpha1"
                }
            
            
                * Add these in module level gradle dependencies
            
            dependencies {
            
                 compile 'android.arch.persistence.room:runtime:' + rootProject.archRoomVersion;
                    annotationProcessor 'android.arch.persistence.room:compiler:' + rootProject.archRoomVersion;
            
            }
            

            【讨论】:

              【解决方案7】:

              这适用于最新版本的 Android Studio 3.1。

              在 Gradle 脚本文件夹下, 在 Project build.gradle 中,添加:

              allprojects {
                  repositories {
              
              ...
              
                      maven { url 'https://maven.google.com' }
                  }
              }
              

              Module build.gradle中,添加:

              dependencies {
              
              ...
                  implementation "android.arch.persistence.room:runtime:1.0.0"
                  annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
              
              }
              

              来源:https://developer.android.com/topic/libraries/architecture/adding-components.html

              【讨论】:

                【解决方案8】:

                当前 (2018 02 14) 版本是

                compile 'android.arch.persistence.room:rxjava2:1.1.0-alpha1'
                compile 'android.arch.persistence.room:runtime:1.1.0-alpha1'
                annotationProcessor 'android.arch.persistence.room:compiler:1.1.0-alpha1'
                
                compile 'android.arch.lifecycle:extensions:1.1.0'
                annotationProcessor 'android.arch.lifecycle:compiler:1.1.0'
                

                【讨论】:

                  【解决方案9】:

                  打开 build.gradle(Project: projectName) 并添加此行(如果不存在)。

                  这可以访问谷歌存储库

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

                  接下来打开 build.gradle(Module:app) 并将这两行添加到现有依赖项中

                  对于 Java

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

                  对于科特林

                  将此行粘贴到应用 kotlin 插件的顶部的依赖项或 android 范围之外

                  apply plugin: 'kotlin-kapt'
                  

                  将此行添加到依赖项

                  def room_version = "1.1.0"
                  implementation "android.arch.persistence.room:runtime:$room_version"
                  kapt "android.arch.persistence.room:compiler:$room_version"
                  

                  要及时了解最新的依赖项版本,请访问 mvn repository for room

                  在这里您可以找到最新版本。

                  【讨论】:

                    【解决方案10】:

                    对于 androidX 和 kapt

                    def room_version = "2.2.5"
                    implementation "androidx.room:room-runtime:$room_version"
                    implementation "androidx.room:room-rxjava2:$room_version"
                    kapt "androidx.room:room-compiler:$room_version"
                    

                    【讨论】:

                      【解决方案11】:

                      截至 2019 年 7 月,如果您希望将 Room 与 Kotlin、AndroidX、协程或 RxJava 一起使用,请在下面添加行。

                         // Room
                          implementation 'androidx.room:room-runtime:' + rootProject.roomVersion
                          // For Kotlin use kapt instead of annotationProcessor
                          kapt 'androidx.room:room-compiler:' + rootProject.roomVersion
                          // optional - Kotlin Extensions and Coroutines support for Room
                          implementation 'androidx.room:room-ktx:' + rootProject.roomVersion
                          // optional - RxJava support for Room
                          implementation 'androidx.room:room-rxjava2:' + rootProject.roomVersion
                      

                      【讨论】:

                      • 如果在 Kotlin 和 JAVA 代码中使用 Room,我们是否需要同时使用 kapt '...room-compiler' 和 annotationProcessor '...room-compiler'?
                      【解决方案12】:

                      根据@Thracian 的回答,这是我在遵循本文档时必须做的事情:

                      https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#13

                          /* Room */
                          implementation 'androidx.room:room-runtime:2.1.0'
                          kapt 'androidx.room:room-runtime:2.1.0'
                      
                          implementation 'androidx.room:room-compiler:2.1.0'
                          kapt 'androidx.room:room-compiler:2.1.0'
                          annotationProcessor 'androidx.room:room-compiler:2.1.0'
                      
                          implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha02'
                          kapt 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha02'
                      
                          implementation 'androidx.room:room-ktx:2.1.0'
                          kapt 'androidx.room:room-ktx:2.1.0'
                      
                          implementation 'android.arch.lifecycle:extensions:1.1.1'
                          kapt 'android.arch.lifecycle:extensions:1.1.1'
                      

                      android {} 内我还要补充:

                          compileOptions {
                              sourceCompatibility JavaVersion.VERSION_1_8
                              targetCompatibility JavaVersion.VERSION_1_8
                          }
                      

                      尽管我读过这些,但对于 Kotlin,您仍然必须使用 annotationProcessor

                      【讨论】:

                        【解决方案13】:
                        def room_version = "2.2.3"
                        def lifecycle_version = "2.1.0"
                        
                        implementation "androidx.room:room-runtime:$room_version"
                        annotationProcessor "androidx.room:room-compiler:$room_version"
                        
                        implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"   // ViewModel and LiveData
                        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
                        

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-06-19
                          • 1970-01-01
                          • 1970-01-01
                          • 2017-11-08
                          • 2018-03-28
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多