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

Posted

技术标签:

【中文标题】使用 react-native 的 android 上的空白白屏(仅发布)【英文标题】:Blank white screen on android using react-native (release only) 【发布时间】:2018-05-04 03:31:03 【问题描述】:

我的应用程序在调试模式下的模拟器上运行良好。当我尝试在设备上使用签名的 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) 在 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"


【问题讨论】:

请发布您的项目 build.gradle 【参考方案1】:

正如错误所说:

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

这意味着您拥有不同版本的 google play 服务。我会假设您使用的是最新的 firebase,即 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

【讨论】:

我不太确定 GPS 是否是原因(请参阅我对问题的编辑) 当您使用设备进行调试时,logcat 中会显示什么? 我们需要更多信息,我们无法猜测为什么它的空白屏幕,但是如果未签名的密钥正在工作并且签名的密钥不是意味着每个都有不同的代码..也许尝试不同的设备 android 版本检查更多问题 我添加了另一个错误消息,希望它有更多有用的信息 @MichaelCampsall 不,我认为那是因为您降级了,并且降级后的版本不支持您使用的 firebase 版本,请在页面Supported versions - React Native / Firebase 的此标题下查看此github.com/invertase/react-native-firebase【参考方案2】:

如您所见,Google Play 服务已过时。需要 11717000 但找到 10298470,说明这个错误是老播放服务自带的。

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

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

【讨论】:

我不太确定 GPS 是否是原因(请参阅我对问题的编辑)

以上是关于使用 react-native 的 android 上的空白白屏(仅发布)的主要内容,如果未能解决你的问题,请参考以下文章

react-native 使用react-native run-android 启动项目 报错 Android project not found

react-native:无法使用发布模式访问Android权限

React-native:允许在 Android 中使用音频的权限

在 android 上使用 react-native 建立 *** 连接

如何禁用 Android 上的设备后退按钮(react-native)?

跟我一起使用android Studio打包react-native项目的APK