2016-03-30 5 views
0

私たちはレルムで最初のアプリを公開しようとしており、oopsがリリースビルドを試みました。我々はProGuardのを有効にするまですべてが、正常に動作し、その後で起動時にアプリがクラッシュ:私たちは、レルムを使用しているProguardでRealmリリースビルドが失敗する - io.realm.RealmHelperが見つかりませんでした

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.activities.IntroActivity}: io.realm.exceptions.RealmException: Could not find io.realm.RealmHelper$ManifestModuleMediator ... Caused by: io.realm.exceptions.RealmException: Could not find io.realm.RealmHelper$ManifestModuleMediator at io.realm.y.a(Unknown Source) at io.realm.y.a(Unknown Source) at io.realm.y.<init>(Unknown Source) at io.realm.y.<init>(Unknown Source) at io.realm.z.a(Unknown Source) at com.example.realm.RealmHelper.a(Unknown Source) at com.example.activities.IntroActivity.onCreate(Unknown Source)

は、ProGuardの設定をお勧めします、すなわち:

-keep class io.realm.annotations.RealmModule -keep @io.realm.annotations.RealmModule class * -keep class io.realm.internal.Keep -keep @io.realm.internal.Keep class * { *; } -dontwarn javax.** -dontwarn io.realm.**

任意の提案を?残念ながら、私たちはどのProGuardのウィザードを持っていない...

FWIW、私はProGuardの設定ファイルに次の行を追加してみました:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.activities.IntroActivity}: io.realm.exceptions.RealmException: Could not find io.realm.RealmHelper$ManifestModuleMediator ... Caused by: io.realm.exceptions.RealmException: Could not find io.realm.RealmHelper$ManifestModuleMediator at io.realm.RealmConfiguration.getModuleMediator(Unknown Source) at io.realm.RealmConfiguration.createSchemaMediator(Unknown Source) at io.realm.RealmConfiguration.<init>(Unknown Source) at io.realm.RealmConfiguration.<init>(Unknown Source) at io.realm.RealmConfiguration$Builder.build(Unknown Source) at com.example.realm.RealmHelper.a(Unknown Source) at com.example.activities.IntroActivity.onCreate(Unknown Source) at android.app.Activity.performCreate(Activity.java:6251)

:へのトレースを変更

-keep class io.realm.** { *; }

これが役立つかどうかわかりません...

+0

どのレルムのバージョンを使用していますか? –

+0

また、注釈プロセッサが実行されていない可能性があります。 Gradleの出力を見ると、 'note:Processing XXX'のような行が見えますか?それらが存在しない場合は、注釈プロセッサが実行されていないことを意味します。 –

+0

レルム0.88.2。確かに、注釈プロセッサは必ずしも実行されていませんでしたが、私はいつも「きれいな」最初に何か他のことをしていなかったので、それが最適化であるかどうかはわかりません。参考までに、私は以下の回答でうまくいった。しかし、おそらくそれは偶然でしょうか?編集、置き換え、別のものを自由に追加して、それを正しいものとしてマークします。私はそこに大きな問題があると思っています。私はちょうどそれについては知らないのです:)素早く対応してくれてありがとう!王国の岩! – mm2001

答えて

0

私は2つの@Rを分割することでこれを解決できましたクラスを別々のファイルにealmModuleします。私。我々はからを行ってきました:

RealmHelper.java

@RealmModule(classes = {Publisher.class, Puzzle.class, Volume.class, VolumeSet.class}) 
public static class ManifestModule { 
} 

@RealmModule(classes = {PuzzleMove.class, PuzzleState.class, VolumeState.class}) 
public static class PuzzleStateModule { 
} 

へ:

、レルム/モジュール/ ManifestModule.java

@RealmModule(classes = {Publisher.class, Puzzle.class, Volume.class, VolumeSet.class}) 
public class ManifestModule { 
} 

、レルム/モジュール/ PuzzleStateModule.java

@RealmModule(classes = {PuzzleMove.class, PuzzleState.class, VolumeState.class}) 
public class PuzzleStateModule { 
} 

RealmHelper.java

import com.example.realm.modules.ManifestModule; 
import com.example.realm.modules.PuzzleStateModule 

私は1〜2で[OK]を働いたファイル、そしてなぜで起こっていなかったものを魔法わからないんだけどProguardはこれを一方的に、あるいは他の方法で軽く振り下ろしましたが、もう一度働いているようです!

関連する問題