How to import Room Persistence Library to an Android project

Viewed 54036

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 don't find which dependencies I should import to my gradle file on my Android project. Someone can give me a hand?

13 Answers

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. enter image description here

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"

Open the build.gradle file for your project (not the ones for your app or module) and add:

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

Open the build.gradle file for your app or module and add the artifacts that you need as dependencies:

dependencies {

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

}

Reference: Android Adding Components

As of July 2019 if you wish to use Room with Kotlin, AndroidX, Coroutines or RxJava add lines below.

   // 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

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

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"
Related