2017-02-24 5 views
1

ここで死んでいます。他の投稿された問題を調べようとしました/ソリューションと誰もまだ私を助けていないようだ...致命的な例外:com.google.firebase.database.d:クラスcom.myapp.android.cに引数のないコンストラクタがありません

私はFirebaseを使用してAndroidアプリを構築している。 今日まで、すべてがうまくいっていて、ユーザーをログインすることができました。

突然(iOSとWebアプリケーションをしばらくしてから)私は自分のAndroidアプリに戻り、

Fatal Exception: com.google.firebase.database.d: Class com.myapp.android.c is missing a constructor with no arguments 
    at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source) 
    at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zzaz(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zza(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zza(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source) 
    at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source) 
    at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zzaz(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zza(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zza(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zza(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source) 
    at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source) 
    at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zzaz(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zza(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source) 
    at com.google.firebase.database.DataSnapshot.getValue(Unknown Source) 
    at com.myapp.android.FirebaseHelper$1.onDataChange(Unknown Source) 
    at com.google.firebase.database.Query$1.onDataChange(Unknown Source) 
    at com.google.android.gms.internal.zzbmz.zza(Unknown Source) 
    at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source) 
    at com.google.android.gms.internal.zzboc$1.run(Unknown Source) 
    at android.os.Handler.handleCallback(Handler.java:815) 
    at android.os.Handler.dispatchMessage(Handler.java:104) 
    at android.os.Looper.loop(Looper.java:207) 
    at android.app.ActivityThread.main(ActivityThread.java:5728) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
..私は次のスタックトレースを取得しています、と私は悲しげに、実際の問題がどこにあるのはあまり意味がカント起動時にクラッシュ(と、それは私のユーザーのデータをフェッチするとき、私はその出来事を推測しています)

私はすべてから取ることができる唯一の手がかりはat com.google.firebase.database.DataSnapshot.getValue(Unknown Source)です。それは私のコードで起こっていると思うようになります..

public void getUserData(final Boolean autoLogin, final Boolean fromGoogleSignIn) { 
    mDatabase = FirebaseDatabase.getInstance().getReference(); 
    final DatabaseReference userRef = mDatabase.child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()); 

    ValueEventListener userListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      if (dataSnapshot.getValue() == null) { 
       // Create User Data 
      } else { 
       sharedInstance().currentUser = dataSnapshot.getValue(User.class); // <-- Crashing here?? 
      } 
     } 
    }; 

    userRef.addListenerForSingleValueEvent(userListener); 
} 

次の最大の謎は、これが唯一の私のreleaseビルドで起こっているということです。 その後、私のreleaseビルドにdebuggable trueの値を追加しましたが、そのときに問題が発生しません(クラッシュしません)。

私のリリースビルドに関するものと、この問題の原因となっているデバッグモードではないものが突然現れました。理由は不明です。私のUserクラスについて

、それは私のプロジェクトで独自のクラス..です

enter image description here

そして、これは私のProGuardのファイルです...

-dontwarn com.squareup.okhttp.** 
-keepattributes Signature 

-keep class com.myapp.android.User { *; } 
-keep class com.myapp.android.Vendor { *; } 
-keep class com.myapp.android.Response { *; } 
-keep class com.myapp.android.Voucher { *; } 

-assumenosideeffects class android.util.Log { 
    public static *** d(...); 
} 

-dontpreverify 

任意のアイデア? ありがとう! :)

+2

コードを小さくしないようにproguardファイルを編集する必要があります。 –

+0

超クイック返信@ cricket_007ありがとう!私は元の投稿に私のプロガードファイルを追加しました...そこに何か間違っていますか? – Simon

+0

エラーが 'com.myapp.android.c'を持っていると考えると、あなたはそのパッケージの中にあるクラスを「保持」していないようです。 –

答えて

1

Proguardがクラスを難読化した後、Firebaseが(dataSnapshot.getValue(YourClass.class);の)データベースから値を取得するクラスを見つけることができないため、問題が発生しているようです。私は同じ問題を抱えていましたが、最終的には、これを修正して、proguard-rules.proのオプションを追加して修正しました。

-dontobfuscate 

何らかの理由で-keepオプションが私のために働かなかった。

残りのクラスの難読化を保つことができる解決策があるかもしれませんが、私はそれほど必要ではないので、これは私のために働いていました。

関連する問題