Как импортировать библиотеку Room Persistence Library в проект Android

Недавно я увидел новую функцию, анонсированную в Google I/O Room Persistence Library для работы с базами данных Sqlite на Android. Я искал официальную документацию и не нашел, какую зависимости, которые я должен импортировать в свой файл gradle в своем проекте Android. Кто-нибудь может дать мне руку?


person Francisco Durdin Garcia    schedule 18.05.2017    source источник


Ответы (11)


Зависимости можно найти в примере кода для компоненты новой архитектуры.

Корень:

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'
person Francisco Durdin Garcia    schedule 18.05.2017

В вашем проекте root build.gradle вы должны добавить репозиторий Google maven:

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

Затем в build.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 Publisher и Flowable в результате ваших запросов.

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

И, наконец, добавьте эту зависимость в тестовые миграции.

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

Обновление: библиотеки по-прежнему помечены как Alpha1, поэтому я думаю, что номер версии скоро будет обновлен, возможно, с использованием 1.0.+, пока не будет окончательная версия может быть хорошей идеей была обновлена ​​и как указано в документации, вы можете использовать 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"
}
person pconcepcion    schedule 18.05.2017
comment
У меня есть модуль, в котором я использую Room. Модуль представляет собой java-библиотеку. Я добавляю зависимости, но получаю следующую ошибку в проекте синхронизации с файлами Gradle Не удалось найти метод annotationProcessor() для аргументов [android.arch.persistence.room:compiler:1.1.1] для объекта типа org.gradle.api.internal .artifacts.dsl.dependencies.DefaultDependencyHandler. Так проблематично ли использовать Room с библиотекой Java? - person user3245268; 15.08.2018
comment
Получил ту же проблему - person rTECH; 13.09.2018
comment
Хорошо, проблема для меня заключалась в том, что я поместил вещи в неправильные файлы build.gradle. см. ответ @live-love для другого хорошего решения. - person rTECH; 13.09.2018

откройте build.gradle(Project: projectName) и добавьте эти строки, если они не существуют.

Это позволяет получить доступ к репозиторию Google

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"

Для Котлина

вставьте эту строку за пределы зависимостей или области Android вверху, где применяются плагины kotlin

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 для комнаты

здесь вы найдете последнюю версию. введите описание изображения здесь

person Extremis II    schedule 18.08.2018

Попробуйте это, чтобы скомпилировать библиотеку Room Persistence

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

И добавьте это в градиент сборки корневого уровня

allprojects {
repositories {
    jcenter()
    maven {
        url "https://maven.google.com"
    }
}
person Rajat Sharma    schedule 18.05.2017

документ для Android:

Добавление репозитория 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"
person David    schedule 19.05.2017

Для 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"
person Radesh    schedule 16.12.2018

Это работает с последней версией Android Studio 3.1.

В папке Gradle Scripts в 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

person live-love    schedule 01.12.2017

Текущие (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'
person Vodyanikov Andrew Anatolevich    schedule 14.02.2018

Откройте файл 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

person Hasan A Yousef    schedule 11.11.2017

По состоянию на июль 2019 года, если вы хотите использовать Room с Kotlin, AndroidX, Coroutines или 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
person Thracian    schedule 28.07.2019
comment
Знаете ли вы, нужно ли нам использовать как kapt '...room-compiler', так и annotationProcessor '...room-compiler', если Room используется в коде Kotlin и JAVA? - person MikeOscarEcho; 29.05.2020

Отскакивая от ответа @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

person Taimoor Ahmad    schedule 28.07.2019