2016-07-22 77 views
15

我在市场上约70%的设备中遇到此故障。然而,它在测试过程中从未出现过。匿名登录时Android上的Firebase崩溃

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

这是错误。

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) 

我使用火力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}" 

现在我只是在禁止我们的应用程序火力点。我们只是测试它看看它是多么稳定。我不知道为什么它在我们所有的测试设备上都能正常工作,然后在野外将这种不好的现象破坏了。

更新: 我能够使用Firebase测试实验室获取问题的视频。发生这种情况时,robotest点击了广告(广告支持的应用程序),然后回到应用程序。所以也许它与FirebaseAuth.getInstance()有关。signInAnonymously();被叫两次?但是Application.onCreate()只应该被调用一次。我知道Firebase崩溃报告中存在一个已知的错误,它会导致创建两个应用程序实例,但我们并未使用该sdk util修复此问题。

+0

*约70%的设备*是一个巨大的崩溃数字。也许你可以使用在线测试场来测试Firebase崩溃。 –

+0

@itnotmenow我正在寻找一种新的测试方法,可以找到这个。我们在一个小型设备场中进行单元测试和连接测试。我们只有十几台设备可以测试。作为一家小公司,做比我们已经做的更多的事情是一项财务困难。所以有些问题需要客户找到。 – theJosh

+0

@theJosh您是否已将“google-services.json”下载到您的应用程序目录并在Firebase控制台授权了软件包名称和SHA1签名? –

回答

3

我使用Firebase测试实验室来查找问题。它在其中一台设备上坠毁,我观看了发生的事件的视频。我们的应用程序支持广告。我们不会在测试过程中点击我们自己的广告,因此从未出现过。用户点击广告并重新进入应用程序后发生崩溃。我发现的解决方案与此问题相同。 FirebaseApp with name [DEFAULT] doesn't exist

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

我认为Application.onCreate()被调用一次以上。尽管这不应该发生。

编辑:这个答案不工作

测试了整整一个星期后,由4人QA团队。在7台测试设备上运行58台设备并连接espresso进行连接测试。然后使用Google Test Lab在多个云设备上运行多个测试。问题从未发生过。然后在发布日,前半个小时500次崩溃!? 70%的崩溃率。所以回到原点。

最终的答案:Proguard的问题

我将这两行来解决我的proguard-rules.pro

#Firebase Authentication 
-keepattributes Signature 
-keepattributes *Annotation* 

问题。

+0

由于这是一个火力点问题,如果我将它更新到最新版本,它会起作用吗? –

-1

您好我有类似的问题,无解天之后,我发现它是一个版本的问题与程序兼容性,所以我改变了这一点:在

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' 

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' 

本应用程序分级和我的问题解决了,对不起我的英语

-1

更新您的版本。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'