Cordova - 飞溅后的白色屏幕,在控制台中没有例外

eb1*_*eb1 26 android ios cordova

我已经离开了我的Cordova应用程序一段时间,但昨天刚刚做了一个新的克隆,并注意到它有"白屏死机"症状 - 启动画面显示,程序加载......然后我只是得到一个空白的屏幕.更多细节:

  • CLI:Cordova 6.1.1,android 5.1.1,ios 4.1.1
  • 我没有使用任何特殊的插件来显示启动画面 - 只是我的config.xml文件中的<splash>元素.
  • 这种情况在iOS和Android上都有发生,包括本地构建和使用PhoneGap Build(即调试和发布).
  • 控制台中缺少资源,例如iOS(使用Safari的开发工具)或Android(使用Chrome的开发工具).
  • 用我最后一次知道的工作版本做了一个差异,并且没有任何东西弹出来.我看到了一个未定义的Underscore引用,但我支持该更改并且它没有解决任何问题 - 我想我会在控制台中看到异常,无论如何.

Cordova/PhoneGap最近做了什么可能导致这种情况?关于如何隔离这个的任何想法?我真的很难过.

eb1*_*eb1 24

那很难看.原来,那里抛出一个异常,它只是被抛出的浏览器开发者工具太早把它捡起来(Safari浏览器,iOS版Chrome和Android,分别).当我通过浏览器目标(cordova platform add browser等等)运行时,异常确实出现了.所以浏览器平台对于我猜的东西很有用.:-)

就我而言,cordova-sqlite-storage插件在我更新所有内容时突破了API更改.解决方案是将插件固定到config.xml文件中的早期版本.

所以,经验教训:

  • 如果您怀疑在启动期间抛出了异常,则可以使用浏览器平台对其进行跟踪.
  • 使用specconfig.xml中的参数将插件固定到特定版本.这将为您节省一些心痛.
  • [来自@jcesarmobile的另一个选项,下面]在浏览器开发工具中点击刷新也将触发异常.太好了!

我将回到config.xml并固定其他项目 - 并按照上面的建议进行一些清理.再次感谢大家.

  • Safari远程Web检查器有一个重新加载按钮,可以捕获这种错误 (3认同)

Hit*_*ahu 6

我管理你的应用程序,这是我遵循的步骤.

1)首先,您需要在config.xml中声明Splash屏幕首选项以及splash screen插件位置.这就是我认为你所缺少的

<preference
    name="SplashScreen"
    value="screen" />
<preference
    name="AutoHideSplashScreen"
    value="true" />
<preference
    name="SplashScreenDelay"
    value="5000" />

<feature name="SplashScreen" >
    <param
        name="android-package"
        value="org.apache.cordova.splashscreen.SplashScreen" />

    <param
        name="onload"
        value="true" />
</feature>
Run Code Online (Sandbox Code Playgroud)

2)在config.xml中声明你的启动画面图像,你已经完成了.

我建议你将图像保存在android项目的默认密度文件夹(ldpi,mdpi,hdpi,xhdpi等)而不是screen/android文件夹,因为它将简化你的项目结构.

    <!-- you can use any density that exists in the Android project -->
    <splash
        density="land-hdpi"
        src="res/drawable-land-hdpi/splash.png" />
    <splash
        density="land-ldpi"
        src="res/drawable-land-ldpi/splash.png" />
    <splash
        density="land-mdpi"
        src="res/drawable-land-mdpi/splash.png" />
    <splash
        density="land-xhdpi"
        src="res/drawable-land-xhdpi/splash.png" />
    <splash
        density="port-hdpi"
        src="res/drawable-hdpi/splash.png" />
    <splash
        density="port-ldpi"
        src="res/drawable-ldpi/splash.png" />
    <splash
        density="port-mdpi"
        src="res/drawable-mdpi/splash.png" />
    <splash
        density="port-xhdpi"
        src="res/drawable-xhdpi/splash.png" />
</platform>
Run Code Online (Sandbox Code Playgroud)

3)将Splash屏幕插件类添加到org.apache.cordova.splashscreen包下的android项目结构中或安装启动画面Cordova插件

https://cordova.apache.org/docs/en/3.1.0/cordova/splashscreen/splashscreen.html

4)最后也是最重要的一步,你必须在你的www文件夹中有cordova.js

Cordova.js的资产

之后我就可以运行你的网络应用了

在此输入图像描述

我是android开发人员我猜你可能需要为iOS做类似的事情