我按照RoboBlender维基中的步骤使用注释数据库,但是我一直在获取java.lang.IllegalStateException: Unable to use annotation database(s),因为它找不到AnnotationDatabaseImpl
我正在使用Android和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"
}modulex/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:我终于发现了问题。原卫兵正在删除这个班。通过添加:
-keep public class * extends com.google.inject.AnnotationDatabase发布于 2015-06-15 18:38:01
几个小时后,我发现了这个问题。是守卫。添加以下行修复了问题。
-keep public class * extends com.google.inject.AnnotationDatabase您可以通过在项目文件夹中运行来检查这些类是否生成:
find . | grep -i AnnotationDatabaseImpl发布于 2015-06-13 07:53:09
您在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"/>https://stackoverflow.com/questions/30810943
复制相似问题