在android上使用react-native的空白白屏(仅限发布)

时间:2017-11-20 19:57:49

标签: android firebase react-native google-play-services react-native-navigation

我的应用程序在调试模式下在模拟器上正常运行。当我尝试在设备上使用已签名的APK或使用以下模拟器在发布模式下运行时:

react-native run-android --variant=release

它只是一个空白的白色屏幕,不会加载。

我正在使用React-Native-Navigation和React-Native-Firebase,这可能会也可能不会导致此问题。

我确实看到的一个错误与我认为的Firebase有关:

  

W / GooglePlayServicesUtil:Google Play服务已过期。需要   11717000但发现10298470 11-20 11:24:04.624 16106-16106 /? W / FA:

failed to send app launch肯定看起来不祥。

编辑:我不确定在我的设备上运行发布版本时,上述错误实际上是导致空白屏幕。此消息显示在模拟器中,但我的应用程序在模拟器上工作。在我的设备上,我看到Google Play服务的版本是11.7.46,我认为应该可以正常使用。

还有什么其他方法会导致我的应用仅在发布时成为空白屏幕吗?

编辑2:

我这次发现了另一个错误(我已经降级到旧版本的react-native-firebase 2.2)

  

11-25 12:11:07.278 5281-5295 / com.spectrum E / FirebaseCrash:无法加载崩溃报告                                                              com.google.android.gms.internal.mn:..com.google.android.gms.dynamite.DynamiteModule $ zzc:远程加载失败。没有发现本地回退。                                                                  在com.google.android.gms.internal.ml.zzFk(未知来源)                                                                  在com.google.firebase.crash.zzc.zzFi(未知来源)                                                                  在java.util.concurrent.FutureTask.run(FutureTask.java:237)                                                                  在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)                                                                  at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588)                                                                  在java.lang.Thread.run(Thread.java:818)                                                               引起:com.google.android.gms.dynamite.DynamiteModule $ zzc:远程加载失败。没有发现本地回退。   ...

编辑3:

以下是app.gradle的依赖关系:

dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:25.0.1"
compile "com.facebook.react:react-native:+"  // From node_modules
compile project(':react-native-navigation')

// RNFirebase required dependencies
compile(project(':react-native-firebase')) {
    transitive = false
}
compile "com.google.firebase:firebase-core:11.0.4"

// RNFirebase optional dependencies
compile "com.google.firebase:firebase-crash:11.0.4"
compile "com.google.firebase:firebase-messaging:11.0.4"

// If you are receiving Google Play API availability issues, add the     following dependency
//    compile "com.google.android.gms:play-services-base:11.0.4"

}

2 个答案:

答案 0 :(得分:3)

正如错误所说:

  

Google Play服务已过期。需要11717000但找到10298470

这意味着您拥有不同版本的Google Play服务。我将假设您使用的是Firebase 11.6.0的最新版本,但您使用的是Google Play Services版本10.2.9,所需版本为11.7.1。

从Firebase文档(在先决条件中):

  

运行Android 4.0(Ice Cream Sandwich)或更新版本以及Google Play服务11.6.0或更高版本的设备

因此,您需要下载最新版本的Google Play服务,或者在build.gradle文件中降级firebase

您目前拥有此版本的firebase:

'com.google.firebase:firebase-core:11.6.0'

降级(可能)到:

'com.google.firebase:firebase-core:10.2.0'

如果您降级firebase-core,那么您还必须降级(在build.gradle中)firebase-auth / firebase-storage / firebase-database

答案 1 :(得分:0)

  

当您看到日志时,Google Play服务已过期。需要11717000但找到了10298470,它表明此错误伴随着较旧的播放服务。

当前版本是11.6.0,因此您需要更新build.gradle文件并同步。

'com.google.firebase:firebase-core:11.6.0'