2017-03-27 6 views
0

java.lang.NoSuchFieldError:タイプLcom/google/gson/TypeAdapterFactoryのフィールドはありません。クラスレイ; ( "ay"の宣言は/data/app/com.adenda.example-1/base.apkに表示されます)java.lang.NoSuchFieldError:タイプLcom/google/gson/TypeAdapterFactoryのフィールドaがありません

私はproguardを有効にすると表示されます。 は、私は同じ問題に直面していたgson

-keep class com.google.common.** { *; } 

-keep class com.google.gson.** { *; } 

-dontwarn com.google.common.** 

-keep class com.google.gson.Gson 



-keep public class * extends com.google.gson.TypeAdapter 

-keepattributes *Annotation* 

-keep class sun.misc.Unsafe { *; } 

-keep class com.google.gson.stream.** { *; } 

-keep class com.google.gson.examples.android.model.** { *; } 

`

+0

ルールがあまりにも多く定義されています。https://github.com/google/gson/blob/master/examples/android-proguard-example/proguard.cfg –

+0

あなたの提案として私のプロガードルールは変更されますが、同じエラーが発生します。 –

+1

よく 'TypeAdapterFactory'がそのリンクに保存されているので、私はあなたに全く同じエラーが出るとは思わない –

答えて

0

ためproguarルールを定義します。ただ、すべての列挙型を保つ:

-keepclassmembers enum * { *; } 

または必要に応じて1をキープアライブ:鉱山の場合

-keepclassmembers enum com.your.package.** { *; } 

をそれらの問題があるため、列挙型を引き起こしました。それがあなたのケースであるかどうかはわかりません。

+0

このOPの問題をどうやって解決するのですか?私は、GsonタイプのアダプターとJavaの列挙型が、同じProGuardルールを共有するためにはどのように関連性があるのでしょうか? –

+0

申し訳ありませんが、私は急いで答えていた。私はクラスのメンバーとしてenumsの問題に直面していたと思った。私は最近それらの1つを持っていた。だから、私の答えは完全に間違っています。これはTypeAdapter $ EnumTypeAdapter が呼び出されたときに起こりました。もう一度 - この答えがあなたを混乱させたら、すみません。 –

関連する問題