Cordova PhoneGap Android应用启动屏不显示问题求助
解决Cordova/PhoneGap Android启动屏不显示的问题
我仔细看了你的config.xml配置,马上发现几个关键问题,这些很可能就是启动屏不显示的原因,咱们一步步来排查修复:
1. 致命的拼写错误
你第一个偏好设置写的是:
<preference name="SplashSreen" value="screen" />
这里SplashSreen少了一个字母c,正确的键名应该是SplashScreen。这个拼写错误会直接让Cordova无法识别启动屏的基础配置,插件自然不会工作。
2. 重复的延迟配置
你的配置里出现了两次SplashScreenDelay:一次值为1000,另一次是10000。虽然Cordova会以最后一次的配置为准,但这种重复设置容易造成混淆,建议只保留一个,把所有偏好设置统一放在配置文件的开头部分,方便管理。
3. 图片路径与尺寸检查
确认你的启动屏图片是否准确存放在res/screen/android/目录下,文件名和配置里的完全一致(比如splash-land-hdpi.png)。另外,Android 7.0+平台对图片分辨率有严格要求,确保每个密度对应的图片尺寸符合规范:
- 竖屏:ldpi(200x320)、mdpi(320x480)、hdpi(480x800)、xhdpi(720x1280)
- 横屏:ldpi(320x200)、mdpi(480x320)、hdpi(800x480)、xhdpi(1280x720)
如果图片尺寸不对,系统可能会自动跳过加载。
4. PhoneGap Desktop/App的缓存问题
PhoneGap Desktop经常会缓存旧的构建文件,导致新配置不生效。你可以试试这几个操作:
- 在PhoneGap Desktop里点击项目的「Refresh」按钮,重新构建项目
- 在Android设备上卸载PhoneGap App,重新安装后再连接调试
- 手动删除项目根目录下的
platforms/android和plugins文件夹,然后重新执行:
这样能确保依赖是干净的,没有残留的旧配置。cordova platform add android cordova plugin add cordova-plugin-splashscreen
5. 插件初始化验证
虽然你设置了AutoHideSplashScreen为true,理论上启动屏会自动隐藏,但如果插件没正确初始化也会有问题。可以在index.js的deviceready事件里加一行测试代码:
document.addEventListener("deviceready", function(){ // 手动调用隐藏,确认插件正常工作 navigator.splashscreen.hide(); }, false);
如果调用后能正常隐藏(如果启动屏显示了的话),说明插件已经正确初始化了。
修正后的config.xml示例
我把你的配置里的错误修复了,整理成更清晰的结构:
<?xml version='1.0' encoding='utf-8'?> <widget id="com.splash.app" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <!-- 启动屏核心配置 --> <preference name="SplashScreen" value="screen" /> <preference name="SplashScreenDelay" value="10000" /> <preference name="AutoHideSplashScreen" value="true" /> <author email="dev@cordova.apache.org" href="http://cordova.io"> Apache Cordova Team </author> <content src="index.html" /> <!-- 插件声明 --> <plugin name="cordova-plugin-whitelist" spec="1" /> <plugin name="cordova-plugin-splashscreen" spec="https://github.com/apache/cordova-plugin-splashscreen.git" /> <!-- 权限与意图配置 --> <access origin="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" /> <allow-intent href="mailto:*" /> <allow-intent href="geo:*" /> <!-- Android平台配置 --> <platform name="android"> <allow-intent href="market:*" /> <splash src="res/screen/android/splash-land-hdpi.png" density="land-hdpi" /> <splash src="res/screen/android/splash-land-ldpi.png" density="land-ldpi" /> <splash src="res/screen/android/splash-land-mdpi.png" density="land-mdpi" /> <splash src="res/screen/android/splash-land-xhdpi.png" density="land-xhdpi" /> <splash src="res/screen/android/splash-port-hdpi.png" density="port-hdpi" /> <splash src="res/screen/android/splash-port-ldpi.png" density="port-ldpi" /> <splash src="res/screen/android/splash-port-mdpi.png" density="port-mdpi" /> <splash src="res/screen/android/splash-port-xhdpi.png" density="port-xhdpi" /> </platform> <!-- iOS平台配置 --> <platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> </platform> <engine name="android" spec="^7.0.0" /> </widget>
按照上面的步骤调整后,重新构建项目,应该就能看到启动屏正常显示了。
内容的提问来源于stack exchange,提问作者peter
相关产品推荐
相关产品推荐

