我正在按照RoboBlender Wiki中的步骤使用注释数据库,但我一直收到java.lang.IllegalStateException: Unable to use annotation database(s)
,因为它无法找到AnnotationDatabaseImpl
我正在使用Android Studio和Gradle。该项目由多个模块组成。
以下是我添加到构建脚本中的内容:
应用程序/的build.gradle:
dependencies {
provided 'org.roboguice:roboblender:3.0.1'
provided 'org.roboguice:roboblender:3.0.1'
}
project.tasks.withType(JavaCompile) { task ->
options.compilerArgs << "-AguiceAnnotationDatabasePackageName=com.sample.myapp"
}
模块[X] /build.gradle:
project.tasks.withType(JavaCompile) { task ->
options.compilerArgs << "-AguiceAnnotationDatabasePackageName=com.sample.module[x]"
}
在应用程序对象上:
RoboGuice.setUseAnnotationDatabases(true);
RoboGuice.getOrCreateBaseApplicationInjector(this, RoboGuice.DEFAULT_STAGE,
RoboGuice.newDefaultRoboModule(this), new MyModule());
RoboGuice.injectMembers(this, this);
我错过了什么吗?我发现了一些类似的问题,但它们并不是很有用。
更新: 我忘记了第一次添加它,但是我包括清单元。
<meta-data android:name="roboguice.modules" android:value="your.package.MyModule"/>
<meta-data android:name="roboguice.annotations.packages" android:value="com.sample.myapp,com.sample.modulex,com.sample.moduley"/>
更新2: 我终于找到了问题。 Proguard正在删除该课程。修正了:
-keep public class * extends com.google.inject.AnnotationDatabase
答案 0 :(得分:2)
您是否在AndroidManifest.xml
?
<meta-data android:name="roboguice.modules" android:value="your.package.MyModule"/>
<meta-data android:name="roboguice.annotations.packages" android:value="com.sample.myapp,com.sample.modulex,com.sample.moduley"/>
答案 1 :(得分:2)
几个小时后我发现了问题。这是进展。添加以下行修复了问题。
-keep public class * extends com.google.inject.AnnotationDatabase
您可以通过在项目文件夹中运行来检查是否正在生成类:
find . | grep -i AnnotationDatabaseImpl