Android 的 Phonegap CLI 构建不显示启动画面

Phonegap CLI builds for Android not showing splash screens

关于闪屏和图标主题的 Phonegap CLI 文档建议如下

SplashScreen (string, defaults to splash): The name of the file minus its extension in the res/drawable directory. Various assets must share this common name in various subdirectories.

<preference name="SplashScreen" value="mySplash"/>

我按如下方式配置了我的 Phonegap CLI 项目

project folder
|
res
  |
  ---port-ldpi.png
  |
  ---land-ldpi.png
  |
  --- ...
  |
  --- land-xhdpi.png

完成后,我写下了我的项目级别 config.xml 文件

<preference name="SplashScreenDelay" value="12000"/>
<preference name="SplashScreen" value="screen"/>        
<splash src="res/port-ldpi.png" density="port-ldpi"/>
<splash src="res/land-ldpi.png" density="land-ldpi"/>
<splash src="res/port-mdpi.png" density="port-mdpi"/>
<splash src="res/land-mdpi.png" density="land-mdpi"/>
<splash src="res/port-hdpi.png" density="port-hdpi"/>
<splash src="res/land-hdpi.png" density="land-hdpi"/>
<splash src="res/port-xhdpi.png" density="port-xhdpi"/>
<splash src="res/land-xhdpi.png" density="land-xhdpi"/> 

然后我发出 phonegap build android --release -d >> /tmp/result.txt 并检查 /tmp/result.txt 中的输出。我显示了以下几行

copying image from /path/to/my/project/res/port-ldpi.png to     
/path/to/my/project/platforms/android/res/drawable-port-ldpi/screen.png

copying image from /path/to/my/project/res/land-ldpi.png to     
/path/to/my/project/platforms/android/res/drawable-land-ldpi/screen.png

.....

copying image from /path/to/my/project/res/land-xhdpi.png to     
/path/to/my/project/platforms/android/res/drawable-land-xhdpi/screen.png

最后,我通过以 7-zip 打开它来检查生成的 APK。在 res 文件夹中我找到了以下

drawable-port-ldpi-v4/screen.png
drawable-land-ldpi-v4/screen.png
...
drawable-land-xhdpi-v4/screen.png

图片是我在 /project/res 文件夹中提供的图片。最后,我检查了输出以确保它以 Command finished with error code 0: 行终止。

然后我安装了我的应用程序并 运行 它 - 没有启动画面。

作为一个很好的衡量标准——尽管作为一个要求没有什么意义——我在将 config.xml 文件的启动和图标位包装在

中后重试了上述操作
<platform name='android'>


</platform>

部分 - 没有区别。 st运行ge 的事情是以完全相同的方式分配的图标完美地工作。我想确定我实际上是在为我的 Huwaei Holly phone 的分辨率提供启动画面,我正在测试它,所以我使用了略有不同的图标图像。安装显示了 XHDPI 图标,因此当应用程序启动时它应该显示 XHDPI 初始屏幕

这是一个经常讨论的话题,但我没有发现我在这里做错了什么。

为了完整起见,我应该提到

为了所有人 运行 的利益,我将答案发布到此线程中。 Cordova/Phonegap 关于闪屏主题的 CLI 文档非常混乱。这里有一些提示可以帮助您

  • 构建 config.xml 文件时,您需要以 <splash src="res/{$name}.9.png" density="{$name}"/> 格式指定各种闪屏图像的位置。 .9. 是可选的 - 如果您使用 9 个补丁图像
  • ,则使用
  • 您还需要 <preference name="SplashScreen" value="screen"/> 行。这是不变的。与文档似乎暗示的相反,您无法选择值 - screen,只有 screen 有效。
  • 图像的原始位置并不重要 - 最好将其放在项目文件夹内的文件夹中,res 在我的例子中。如果将它放在 www 文件夹中,您最终会得到两份图像副本 - 其中一份从未使用过。
  • 当 Phonegap CLI 构建您的项目时,它会将您的图像复制到 platforms/android/res/drawable-port|land-??dpi-v4。我不确定为什么 v4 但就是这样。正是这些图像被用来显示启动画面
  • 最重要的 在 Android 启动画面不会在启动时自动显示。要让他们出现,你必须做两件事

    1. 在您的项目中包含 cordova-plugin-splashscreen 插件
    2. 调用 navigator.splashscreen.show() - 通常来自 deviceReady 事件

最后,要控制初始显示的持续时间,您需要指定 <preference name="SplashScreenDelay" value="..."/>,其中值以毫秒为单位。

如果 Cordova 文档能够优雅地提及在 Android 上启动画面不会自动显示,这将对很多开发人员有所帮助。