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 初始屏幕
这是一个经常讨论的话题,但我没有发现我在这里做错了什么。
为了完整起见,我应该提到
- Phonegap CLI 版本:5.3.6
- 在 Honor Holly 上测试,Android 版本 4.4.2
为了所有人 运行 的利益,我将答案发布到此线程中。 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 启动画面不会在启动时自动显示。要让他们出现,你必须做两件事
- 在您的项目中包含
cordova-plugin-splashscreen
插件
- 调用 navigator.splashscreen.show() - 通常来自
deviceReady
事件
最后,要控制初始显示的持续时间,您需要指定 <preference name="SplashScreenDelay" value="..."/>
,其中值以毫秒为单位。
如果 Cordova 文档能够优雅地提及在 Android 上启动画面不会自动显示,这将对很多开发人员有所帮助。
关于闪屏和图标主题的 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 初始屏幕
这是一个经常讨论的话题,但我没有发现我在这里做错了什么。
为了完整起见,我应该提到
- Phonegap CLI 版本:5.3.6
- 在 Honor Holly 上测试,Android 版本 4.4.2
为了所有人 运行 的利益,我将答案发布到此线程中。 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 启动画面不会在启动时自动显示。要让他们出现,你必须做两件事
- 在您的项目中包含
cordova-plugin-splashscreen
插件 - 调用 navigator.splashscreen.show() - 通常来自
deviceReady
事件
- 在您的项目中包含
最后,要控制初始显示的持续时间,您需要指定 <preference name="SplashScreenDelay" value="..."/>
,其中值以毫秒为单位。
如果 Cordova 文档能够优雅地提及在 Android 上启动画面不会自动显示,这将对很多开发人员有所帮助。