数据库
首页 > 数据库> > android-Roboblender使用带有多个模块的注释数据库

android-Roboblender使用带有多个模块的注释数据库

作者:互联网

我正在从RoboBlender Wiki开始遵循使用注释数据库的步骤,但是我一直在获取java.lang.IllegalStateException:无法使用注释数据库,因为它找不到AnnotationDatabaseImpl

我正在使用Android Studio和Gradle.该项目包含多个模块.

>应用
>模块A
>模块B
>模块C

这是我添加到构建脚本中的内容:

app / 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"
}

module [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

解决方法:

您是否在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"/>

标签:gradle,dependency-injection,roboguice,android,roboblender
来源: https://codeday.me/bug/20191028/1950713.html