我已经离开了我的Cordova应用程序了一段时间,但昨天刚刚做了一个新的克隆,发现它有“死亡的白屏”症状 - 启动画面显示,程序加载...和然后我得到一个空白的屏幕。更多细节:
<splash>
元素。Cordova / PhoneGap最近有没有做过可能导致这种情况的事情?关于如何隔离这个的任何想法?我真的很难过。
答案 0 :(得分:21)
那很难看。事实证明,是被抛出的异常,它只是被浏览器开发工具提起太早了(分别是Safari,适用于iOS和Android的Chrome)。当我通过浏览器目标(cordova platform add browser
等)运行时,异常确实出现了。所以浏览器平台对于我猜的东西很有用。 : - )
就我而言,cordova-sqlite-storage插件在我更新所有内容时突破了API更改。解决方案是将插件固定到config.xml文件中的早期版本。
所以,经验教训:
spec
参数将插件固定到特定版本。这将为你节省一些心痛。我将回到config.xml并固定其他项目 - 并按照上面的建议进行一些清理。再次感谢大家。
答案 1 :(得分:6)
我管理你的应用程序这是我遵循的步骤。
1)首先,您需要在 config.xml 中声明Splash屏幕首选项以及启动画面插件位置。这就是我认为你缺少的东西
<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>
2)在您已经完成的 config.xml 中声明您的启动画面图像。
我建议您将图像保存在android项目的默认密度文件夹(ldpi,mdpi,hdpi,xhdpi等)中,而不是屏幕/ 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>
3)将Splash screen plugin class添加到 org.apache.cordova.splashscreen 包下的android项目结构中,或者安装启动画面Cordova插件
https://cordova.apache.org/docs/en/3.1.0/cordova/splashscreen/splashscreen.html
4)最后也是最重要的一步,你必须在你的www文件夹中有cordova.js
之后我能够运行您的网络应用
我是android开发人员我猜你可能需要为iOS做类似的东西
答案 2 :(得分:2)
使用带有ember.js的cordova时遇到了类似的问题。这是关于我的应用程序的网址更改策略。
查看this answer,它可能与您的问题有关。
答案 3 :(得分:2)
如果要在splash-screen
中添加启动功能,则应为iOS和Android安装config.xml
插件才能正常工作。或者没有splash-screen
插件你可以尝试做的是制作一个带有HTML的闪屏,将你的身体分为两部分:内容和登录。然后设置内容样式display:none。当应用程序完成加载后,您只需设置加载屏幕显示:无和内容屏幕显示:阻止或任何您想要的
您在config.xml
<preference name="SplashScreenDelay" value="3000" />
<preference name="SplashMaintainAspectRatio" value="true|false" />
<preference name="SplashShowOnlyFirstTime" value="true|false" />
答案 4 :(得分:2)
尝试将此首选项添加到config.xml,也许这就是问题
<preference name="AutoHideSplashScreen" value="true"/>
答案 5 :(得分:1)
这里找到了唯一对我有用的解决方法: http://www.codingandclimbing.co.uk/blog/ionic-2-fix-splash-screen-white-screen-issue-14
基本上编辑你的config.xml文件。启动画面设置应如下所示:
<preference name="ShowSplashScreen" value="true"/>
<preference name="SplashScreen" value="screen"/>
<preference name="SplashScreenDelay" value="30000"/>
<preference name="AutoHideSplashScreen" value="false"/>
<preference name="SplashShowOnlyFirstTime" value="false"/>
<preference name="FadeSplashScreen" value="false"/>
<feature name="SplashScreen">
<param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen"/>
</feature>
答案 6 :(得分:1)
<meta http-equiv="Content-Security-Policy">
上遗失的head
标记导致我的情况出现白屏。
答案 7 :(得分:1)
我在config.xml中添加了这些行
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="6000" />
当我将screendelay设为3000时,我也有黑屏。所以我改为6000.我认为cordova需要一些时间来加载你的js,css和图像文件。
答案 8 :(得分:1)
在我的情况下,我在第一个屏幕仍然安装之前放了ALERT。
答案 9 :(得分:0)
1&GT;&GT;如果您怀疑在启动期间抛出了异常,则可以使用浏览器平台对其进行跟踪。 2&gt;&gt;使用config.xml中的spec参数将插件固定到特定版本。这将为您节省一些心痛。
答案 10 :(得分:0)
就我而言,我不小心在app.js中评论了州定义。
答案 11 :(得分:0)
我的问题出在ES6上,它在iPhone和Android 6上完美运行,但它不适用于Android 4和5。
答案 12 :(得分:0)
我有这种情况并解决了它。
就我而言,它与此代码类似:
$scope.images.push({ id: i, src: "http://placehold.it/50x50" , pstb, trno});
以上代码在Android 7.0上运行良好,但在android 4.4.4上启动后只有白屏?
改为:
$scope.images.push({ id: i, src: "http://placehold.it/50x50", pstb: pstb, trno: trno});
在所有设备上运行(至少在我的所有设备上运行)
答案 13 :(得分:0)
并不是真正的答案,但我将其添加到此处的潜在实验列表中-我从未弄清楚这是怎么发生的,但是通过删除整个platforms
文件夹和{{1} },然后重新添加平台。