2015-06-12 25 views
3

我下面從RoboBlender Wiki步驟使用標註數據庫,但我不斷收到java.lang.IllegalStateException: Unable to use annotation database(s),因爲它無法找到AnnotationDatabaseImplRoboblender使用註釋數據庫有多個模塊

我使用的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 
+0

如果發現問題,那麼請回答你的問題,並接受它 – schnatterer

回答

2

幾個小時後我發現了這個問題。這是proguard。添加以下行修復了問題。

-keep public class * extends com.google.inject.AnnotationDatabase 

您可以檢查正在由項目文件夾中運行生成的類:

find . | grep -i AnnotationDatabaseImpl 
+0

你可以發佈你的整個build.gradle嗎?...我無法在AndroidStudio下運行RoboBlender。 – NemesisDoom

+0

同樣的問題給我.. – vishnupriyan

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"/> 
+0

是林上市模塊和註釋數據庫。我忘了將它添加到問題中。謝謝 –