2016-07-22 10 views
15

Ich bekomme diesen Absturz in etwa 70% der Geräte auf dem Markt. Es kam jedoch nie während des Tests auf.Firebase stürzt bei anonymer Anmeldung auf Android

public class MyApp extends Application{ 
public void onCreate() { 
     super.onCreate(); 
     FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
     FirebaseAuth.getInstance().signInAnonymously(); 
    } 
} 

Dies ist der Fehler.

Fatal Exception: java.lang.RuntimeException: Unable to create application com.mycompany.myapp.activities.MyApp: java.lang.ClassCastException: com.google.android.gms.internal.hc cannot be cast to com.google.firebase.auth.c 
com.google.android.gms.internal.hc cannot be cast to com.google.firebase.auth.c 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4927) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:153) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:157) 
    at android.app.ActivityThread.main(ActivityThread.java:5633) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassCastException: com.google.android.gms.internal.hc cannot be cast to com.google.firebase.auth.c 
    at com.google.android.gms.internal.aa.a(Unknown Source) 
    at com.google.firebase.auth.FirebaseAuth.a(Unknown Source) 
    at com.google.firebase.auth.FirebaseAuth.d(Unknown Source) 
    at com.google.firebase.auth.FirebaseAuth.<init>(Unknown Source) 
    at com.google.firebase.auth.FirebaseAuth.<init>(Unknown Source) 
    at com.google.android.gms.internal.z.<init>(Unknown Source) 
    at com.google.firebase.auth.FirebaseAuth.c(Unknown Source) 
    at com.google.firebase.auth.FirebaseAuth.b(Unknown Source) 
    at com.google.firebase.auth.FirebaseAuth.b(Unknown Source) 
    at com.tesseractmobile.solitairesdk.activities.SolitaireApp.onCreate(SolitaireApp.java:123) 
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1020) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4924) 

Ich bin ich in unserer App einfach deaktivieren Feuerbasis Gerade jetzt Feuerbasis 9.2.1

compile "com.google.firebase:firebase-core:${firebaseVersion}" 
compile "com.google.firebase:firebase-database:${firebaseVersion}" 
//For dynamic links 
compile "com.google.firebase:firebase-invites:${firebaseVersion}" 
//Authentication - for logging winning games 
compile "com.google.firebase:firebase-auth:${firebaseVersion}" 

verwenden. Wir haben es nur getestet, um zu sehen, wie stabil es ist. Ich habe keine Ahnung, warum es bei all unseren Testgeräten funktioniert hat und dann in der Wildnis so abgestürzt ist.

Update: Ich konnte ein Video des Problems mit Firebase Test Lab erhalten. Es passierte, als der Robotest auf eine Anzeige klickte (App unterstützte App) und dann zurück zur App kam. Vielleicht hat es etwas mit FirebaseAuth.getInstance() zu tun. SignInAnonymously(); zweimal angerufen werden? Application.onCreate() sollte jedoch nur einmal aufgerufen werden. Ich weiß, dass es einen bekannten Fehler bei der Firebase-Absturzmeldung gibt, der dazu führt, dass zwei Anwendungsinstanzen erstellt werden, aber wir verwenden dieses sdk-Dienstprogramm nicht, um das Problem zu beheben.

+0

* über 70% der Geräte * das ist eine große Zahl für einen Absturz. Vielleicht könnten Sie Online Test Farm verwenden, um gegen Firebase Crash zu testen. –

+0

@itnotmenow Ich bin auf der Suche nach einer neuen Testmethode, die dies finden würde. Wir führen Komponententests und verbundene Tests auf einer kleinen Gerätefarm durch. Wir haben nur ein Dutzend Geräte zum Testen. Als kleines Unternehmen ist es eine finanzielle Hürde, mehr zu tun, als wir es bereits tun. Also müssen einige Probleme nur von den Kunden gefunden werden. – theJosh

+0

@theJosh Haben Sie "google-services.json" in Ihr App-Verzeichnis heruntergeladen und beide Paketnamen und die SHA1-Signatur in Firebase Console autorisiert? –

Antwort

3

Ich habe Firebase Test Lab verwendet, um das Problem zu finden. Es stürzte auf einem ihrer Geräte und ich sah das Video von dem, was passiert ist. Unsere App wird unterstützt. Wir klicken während des Tests nicht auf unsere eigenen Anzeigen, so dass dies nie auftrat. Der Absturz erfolgt, nachdem ein Nutzer auf eine Anzeige geklickt hat und dann die App erneut aufruft. Die Lösung, die ich gefunden habe, war die gleiche wie dieses Problem. FirebaseApp with name [DEFAULT] doesn't exist

 if (!FirebaseApp.getApps(this).isEmpty()){ 
      FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
      FirebaseAuth.getInstance().signInAnonymously(); 
     } 

Ich denke Application.onCreate() mehr als einmal aufgerufen wird. Obwohl das nie passieren sollte.

EDIT: Diese Antwort FUNKTIONIERT NICHT

Nach einer Woche der Prüfung durch ein 4 Person QA-Team. 58 Geräte und angeschlossene Tests mit Espresso auf 7 Testgeräten laufen. Dann führen Sie mit Google Test Lab mehrere Tests auf Dutzenden von Cloud-Geräten aus. Das Problem ist nie aufgetreten. Dann am Tag der Veröffentlichung stürzt 500 in der ersten halben Stunde!? 70% Absturzrate. Also zurück auf Platz eins.

FINAL ANTWORT: Proguard Ausgabe

Ich habe diese beiden Linie meiner proguard-rules.pro

#Firebase Authentication 
-keepattributes Signature 
-keepattributes *Annotation* 

Problem gelöst.

+0

Da es sich um ein Firebase-Problem handelt, funktioniert es, wenn ich es auf die neueste Version aktualisiere? –

-1

Hallo, ich habe ein ähnliches Problem, nach Tagen ohne Lösung, fand ich, was es eine Version Problem mit dem appcompat ist, also habe ich dies:

compile 'com.android.support:appcompat-v7:23.4.0' 
compile 'com.android.support:design:23.4.0' 
compile 'com.android.support:support-v4:23.4.0' 

dazu:

compile 'com.android.support:appcompat-v7:23.3.0' 
compile 'com.android.support:design:23.3.0' 
compile 'com.android.support:support-v4:23.3.0' 

in Die App Graddle und mein Problem gelöst, sorry für mein Englisch

-1

Aktualisieren Sie Ihren Build.Gradle:

// Firebase Gradle 
compile "com.google.firebase:firebase-auth:9.4.0" 
compile 'com.google.firebase:firebase-storage:9.4.0' 
compile 'com.google.firebase:firebase-messaging:9.4.0' 
compile 'com.google.firebase:firebase-database:9.4.0' 
compile 'com.google.firebase:firebase-core:9.4.0'