How to import Room Persistence Library to an Android project

后端 未结 13 1188
执笔经年
执笔经年 2021-02-05 00:01

I recently saw the new feature announced on Google I/O Room Persistence Library to work with Sqlite databases on Android. I have been looking to the official documentation and I

相关标签:
13条回答
  • 2021-02-05 00:05

    Bouncing off @Thracian's answer, here's what I had to do while following this documentation:

    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'
    

    Also within android {} I had to add:

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    

    Despite what I've read, with Kotlin you still must use annotationProcessor

    0 讨论(0)
  • 2021-02-05 00:08

    For androidX and 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"
    
    0 讨论(0)
  • 2021-02-05 00:12
    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"
    
    0 讨论(0)
  • 2021-02-05 00:13

    open build.gradle(Project: projectName) and add this lines if it doesn't exist.

    This enables access to google repository

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

    next open build.gradle(Module:app) and add this two lines to existing dependencies

    For Java

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

    For Kotlin

    paste this line outside of the dependencies or android scope at the top where kotlin plugins are applied

    apply plugin: 'kotlin-kapt'
    

    add this lines to dependencies

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

    to keep yourself updated with the recent dependencies version visit mvn repository for room

    here you will find the latest version.

    0 讨论(0)
  • 2021-02-05 00:13

    This works with the latest version of Android Studio 3.1.

    Under Gradle Scripts folder, in the Project build.gradle, add:

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

    In the Module build.gradle, add:

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

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

    0 讨论(0)
  • 2021-02-05 00:14

    On your project root build.gradle you have to add Google's maven repository:

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

    And then on the build.gradle of the Module you should add:

    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'
    

    Add this if you want to use RxJava2 Publisher and Flowable objects as a result of your queries

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

    And finally add also this dependency to test migrations

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

    Update: The libraries are still marked as Alpha1 so I guess the version number will be updated soon, maybe using 1.0.+ until there is a final version could be a good idea have been updated and as definded on the documentation you can use room 1.1.1 using this dependencies:

    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"
    }
    
    0 讨论(0)
提交回复
热议问题