如何避免仅在 Android 上的 Phonegap 应用程序黑屏?

Posted

技术标签:

【中文标题】如何避免仅在 Android 上的 Phonegap 应用程序黑屏?【英文标题】:How to avoid Phonegap app blank screen only on Android? 【发布时间】:2014-03-20 19:28:09 【问题描述】:

我正在将一个带有 phonegap 的网络应用程序部署到以下平台:iosandroid

我可以同时部署两者,但是当应用程序启动时,在 android 模拟器 上(还有,我用它来测试应用程序的任何物理设备),它保持白色/空白的画布。永远。

最初,我认为它与 javascript 相关,虽然我认为它没有意义,因为我在 iOS 上没有同样的问题(但我知道,它可能与浏览器相关)。

我已经通过互联网研究了这个问题,但任何可能有意义的解决方案都对我不起作用。

我尝试过的解决方案:

PhoneGap Build iOS app has blank white screen after splash screen

我使用的Phonegap版本是:v3.3.0

另外,我正在使用 Javascript 框架:Dojo,v1.9

【问题讨论】:

如果您的应用使用或需要白名单插件,请查看***.com/a/34371334/1923045 【参考方案1】:

我的 tl;dr 答案是……用 Weinre 调试那个东西:

http://people.apache.org/~pmuellr/weinre/docs/latest/

Weinre 与 Chrome/Safari 检查器非常相似,仅适用于远程浏览器(例如本机 WebView!)。很甜,嗯?它涉及一些设置,但对我来说非常值得。以交互方式测试您的假设,并查看您的 console.log 语句以比使用 logcat(在 android 案例中)优越得多的方式打印出来。

对此事的一些思考:

在过去几个月开发我的应用程序时,我遇到了无数次黑屏。两次都不是同一个问题,对我来说,这总是我在开发过程中遇到的问题。

例如,不通过命令行添加 Cordova 插件,而是尝试在我的应用程序的 javascript 逻辑中引用该插件。

另一个例子是在服务器上没有正确设置跨域的东西,并且在桌面/本地主机上运行良好的初始 ajax 调用一旦部署到设备上就突然无法正常工作,它只是废话(给出白屏)。

前几天的另一个例子是想看看我是否可以在 2.3 之前的 Android 上使用 Sencha,在我的例子中,你猜它给了我一个白屏。也许 Dojo 也有类似的问题?

根据要求,我当前的 config.xml 中的设置在 iOS 和 Android 上都可以正常工作

<preference name="permissions" value="none" />
<preference name="orientation" value="portrait" />
<preference name="target-device" value="universal" />
<preference name="fullscreen" value="false" />
<preference name="webviewbounce" value="true" />
<preference name="prerendered-icon" value="true" />
<preference name="stay-in-webview" value="false" />
<preference name="ios-statusbarstyle" value="black-opaque" />
<preference name="detect-data-types" value="true" />
<preference name="exit-on-suspend" value="false" />
<preference name="show-splash-screen-spinner" value="true" />
<preference name="auto-hide-splash-screen" value="true" />
<preference name="disable-cursor" value="false" />
<preference name="android-minSdkVersion" value="7" />
<preference name="android-installLocation" value="auto" />

希望这会有所帮助。

【讨论】:

我听说过 Weinre(是的,它很酷 ^^),并且我使用过它,但老实说我没有给它一个公平的机会。不过我现在是。让我更困惑的是,我在控制台日志上没有得到任何错误输出。在调试一些 Javascript 代码时,这是最让我感到厌烦的地方。你能给我看一个基本的 config.xml 文件吗?只有安卓配置。我感觉它与 SplashScreen 或类似的东西有关。 与我相比,您的偏好唯一不同的是全屏选项。尽管我改变了那个“标志”,但问题仍然存在。现在,我毫不怀疑它与 javascript 相关。我发布了一个新问题,其中包含有关该问题的更详细信息。如果您有时间,请注意看一下:***.com/questions/22565988/…【参考方案2】:

Phonegap 6.3 支架 (phonegap create) 错误:density 应替换为 config.xml 中的 qualifier。见https://medium.com/@jlchereau/how-to-get-splash-screens-to-show-in-android-apps-generated-by-phonegap-build-c0210f2783ff。

【讨论】:

以上是关于如何避免仅在 Android 上的 Phonegap 应用程序黑屏?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用phonegap检测android中的来电号码

仅在前台应用:如何避免“未声明后台位置访问”

如何在 Android 的原生视图之上覆盖 PhoneGap 的 CordovaWebView?

如何在 Android 上的 Firebase 存储中设置持久性?

React-native 占位符仅在 Android 上部分可见

如何避免将文件下载到下载文件夹并仅在c#中下载到其他特定文件夹