我下面從RoboBlender Wiki步驟使用標註數據庫,但我不斷收到java.lang.IllegalStateException: Unable to use annotation database(s)
,因爲它無法找到AnnotationDatabaseImpl
Roboblender使用註釋數據庫有多個模塊
我使用的Android Studio和搖籃。該項目由多個模塊組成。
- 應用
- moduleA
- moduleB
- moduleC
這裏是我加入到我的構建腳本:
應用/的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
如果發現問題,那麼請回答你的問題,並接受它 – schnatterer