2017-05-16 76 views
0

我已經創建:Realm - 錯誤:Uncaught翻譯錯誤:java.lang.IllegalArgumentException:已添加:Lio/realm/DefaultRealmModule;

使用境界

apply plugin: 'com.android.library' 
apply plugin: 'realm-android' 

和2),其使用領域和庫-A項目-A 1)庫-A;項目-A不使用庫-A的模式。

apply plugin: 'com.android.application' 
apply plugin: 'realm-android' 

主要項目的gradle產出:

dependencies { 
    classpath "io.realm:realm-gradle-plugin:3.1.3" 
} 

在生成過程中,我遇到這些錯誤:

Error:Uncaught translation error: java.lang.IllegalArgumentException: already added: Lio/realm/DefaultRealmModule; 
Error:Uncaught translation error: java.lang.IllegalArgumentException: already added: Lio/realm/DefaultRealmModuleMediator; 
Error:2 errors; aborting 
Error:Execution failed for task ':x:transformClassesWithDexForDevDebug'. 
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process 

更新:它似乎有什麼東西錯了我的構建設置,以進一步檢查簡單地將插件添加到庫導致錯誤。

apply plugin: 'realm-android' 

什麼原因導致這個錯誤,我該如何解決?謝謝!

+0

您是否將庫使用的RealmObjects公開爲'@ RealmModule'? – EpicPandaForce

+0

不需要,即使項目不使用庫的RealmObjects時也是如此。 – sticky

+0

顯然這是因爲Realm註釋處理器知道它是一個庫。 – EpicPandaForce

回答

1

將模型分爲模塊。

某處庫申報

// You can make this a singleton, annotations are the important part. 
@RealmModule(library = true, allClasses = true) 
class LibraryRealmModule {} 

這將會把該庫中的所有模型類爲LibraryRealmModule

你可以在你的應用項目中做同樣的事情,但是如果你沒有指定任何模塊,將爲你生成一個默認模塊。這個生成的模塊將包含應用程序項目中的所有模型類。

然後,當你建立Realm實例提供了以下配置:

比你的插件的配置是正確的
final LibraryRealmModule libRealmModule = new LibraryRealmModule(); 
final RealmConfiguration config = RealmConfiguration.Builder() 
     .name(Realm.DEFAULT_REALM_NAME) // Just a file name 
     .modules(Realm.getDefaultModule(), libRealmModule) // List all modules 
     .deleteRealmIfMigrationNeeded() // TODO Actually migrate data when in production! 
     .build() 
final Realm realm = Realm.getInstance(config); 

其他。

+0

此代碼假設您將使用來自一個領域的庫和應用程序模型。如果庫使用應用程序項目中的不同領域,則需要a)提供不同的領域名稱b)仍然在庫中聲明顯式模塊。 –

+0

嘗試過,但仍然得到了同樣的錯誤。 – sticky

+0

這是正確的解決方案,所以如果這不起作用,那麼在構建設置中必然會出錯。 –

0

關於我在這個問題中問過的項目結構,Eugen的答案並不直接解決我遇到的問題,但他是正確的,必須創建一個RealmModule。

另一個庫B庫(RealModule)已創建幷包含庫A和項目A的RealmObjects。將它設置爲2的依賴關係後,才解決問題。

相關問題