私はAndroidライブラリを開発しており、その中に新しいAndroidルーム永続ライブラリを使用したいと考えています。Android Room永続ライブラリがライブラリプロジェクト内で動作しない
Caused by: java.lang.RuntimeException: cannot find implementation for MyLibraryName.Database.QSDatabase. QSDatabase_Impl does not exist at android.arch.persistence.room.Room.getGeneratedImplementation(Room.java:90)
annotationProcessorは、コンパイル時に余分なコードを生成していないことを意味します。ただし、起動時に私はこのエラーを得ました。
Btwは、@Databaseコードをアプリモジュール内に配置するとすべて正常に動作しています。
私のGradleファイル(ライブラリモジュール):
apply plugin: 'com.android.library'
apply plugin: 'groovyx.android'
buildscript {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:1.1.0'
}
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.0'
}
}
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/groovy'] } }
}
dependencies {
// google Room persistence library
compile "android.arch.persistence.room:runtime:1.0.0-alpha1"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha1"
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',
{
exclude group: 'com.android.support', module: 'support-annotations'
})
// google location service
compile 'com.google.android.gms:play-services-location:10.2.4'
androidTestCompile 'junit:junit:4.12'
// Http
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'
compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
// groovy
compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.4'
}
私の場合は動作しています。 二重チェックで何か忘れたかもしれません。 – Moinkhan
私は再チェックしていましたが、最後に問題はグルーヴィーの使用と関連しているようです。私のコードをGroovy /ディレクトリの下に置くと、注釈プロセッサが呼び出されない。私はそれを修正する方法を知りません。 '| ____ app | | ____ build.gradle | | ____ src | | | ____メイン | | | | __ java | ____ MyLibraryName | | ____ build.gradle | | ____ src | | | ____メイン | | | | ____ groovy <=コードがgroovyの下に置かれていると動作しない/ | | | | ____ java <=コードがjava/'の下に置かれている場合の作業 – stevenwood