2017-06-08 15 views
4

私は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' 

} 
+0

私の場合は動作しています。 二重チェックで何か忘れたかもしれません。 – Moinkhan

+0

私は再チェックしていましたが、最後に問題はグルーヴィーの使用と関連しているようです。私のコードをGroovy /ディレクトリの下に置くと、注釈プロセッサが呼び出されない。私はそれを修正する方法を知りません。 '| ____ app | | ____ build.gradle | | ____ src | | | ____メイン | | | | __ java | ____ MyLibraryName | | ____ build.gradle | | ____ src | | | ____メイン | | | | ____ groovy <=コードがgroovyの下に置かれていると動作しない/ | | | | ____ java <=コードがjava/'の下に置かれている場合の作業 – stevenwood

答えて

-1

は、あなたが、私は同じプロジェクトの構造を持っていたグルーヴィー/

について正しいようだ@stevenwood。しかし、私の場合、groovy /の中に実際のGroovyコードはありませんでした。普通の古いJavaコードのみ。私はこのプロジェクトには、以下を行うことで、再び作業を取得するためにしたがって、おそらくそれは簡単だったコメントアウトapply plugin: 'groovyx.grooid.groovy-android' from the module's build.gradle

git mv groovy/ java/

をその後で/削除コメントアウトclasspath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.8' from the project's build.gradle

/削除

を変更少なくとも、私は部屋からmissing Database_Implメッセージを受け取るのをやめました。

関連する問題