迁移到 cordova-android-11 并处理新的闪屏 api

问题描述 投票:0回答:2

我正在尝试迁移到 cordova-android-11(从 10.1.2 开始)。我仍然遇到的唯一问题是闪屏。 我知道我现在必须使用splashSCreen api。我尝试通过在 android studio 中创建一个新图标来实现此目的,如下所述:https://lessons.livecode.com/m/4069/l/1496759-how-to-create-and-use-adaptive-icons-在 Android 上。 随后,我将新创建的图标 (ic_launcher.xml) 添加到了我的 cordova 项目的资源文件夹中。 我在 config.xml 中添加了该文件的路径作为首选项,如下所示:

但是,这给了我 2 个构建错误。因为 ic_launcher.xml 引用了前景和背景图像:

这些在 Cordova-Android 项目中不存在。即使当我尝试将它们添加到我的资源中时,它们也不会复制到我的platforms/android 文件夹中。

有人可以向我解释一下要添加哪些文件以及更一般地说 Cordova 如何处理这个新的splash-api?我可以从 android 找到很多关于如何创建新图标的文档。但我对 Cordova-android 能找到的就是将该首选项添加到 config.xml 中,但没有透露该文件应包含的内容。它如何处理不同的像素密度?图标上写着any-dpi,但是在cordova中它是如何实现这一点的呢?

提前致谢,非常感谢这里的任何帮助!

如何制作自适应图标:https://developer.android.com/studio/write/image-asset-studio#create-adaptive

相关问题:Cordova 11 - Splash Screen -splashscreen.xml 中包含什么

我认为这已被弃用,但它可能有助于找到解决方案:https://www.mathew-paul.nz/posts/cordova-android-adaptive-icons/

(复制到git问题:https://github.com/apache/cordova-android/issues/1528

javascript cordova splash-screen cordova-android
2个回答
3
投票

经过一系列的试验和错误,我想我终于让它以适用于所有设备的方式工作了。我缺少的基本步骤是,您必须将图标放在大小为 288 像素的方形背景上,并将图标放置在 192 像素的圆圈内。正如 @ddassa 在评论中解释的那样。

我错过的第二件事是创建正确的 xml。您必须从 .svg 开始并创建矢量资源而不是图像资源。此 .xml 使用与密度无关的像素 (dp),因此在所有设备上都应具有相同的工作方式。

TL;博士:

第1步:创建一个288x288px的svg。使用与加载图标的页面相同的背景颜色,并将您的徽标放在该正方形的中间。您的徽标需要在 192 像素以内。就像这张图一样:

第2步:使用android studio创建.xml文件。 为此,请打开一个包含“空活动”的新项目。右键单击 res 文件夹,转到“新建”->“矢量资源”。从步骤 1 中选择您的图像。通过向导应该会生成一个 .xml 文件。

第 3 步:将此 .xml 文件添加到 Cordova 中的资源中,并在 config.xml 中链接到它,如下所示:

<preference name="AndroidWindowSplashScreenAnimatedIcon" value="path to yourIcon.xml" />

xml 文件有 dp,代表密度无关像素。由此我得出的结论是,它的工作应该独立于屏幕尺寸和分辨率。

链接到android文档中的启动屏幕页面(我从那里获取图像):https://developer.android.com/develop/ui/views/launch/splash-screen


0
投票

适合那些寻找不需要 XML 的简单解决方案的人。创建一个 192x192 PNG 文件,中间包含您的徽标,并将其引用为 AndroidWindowSplashScreenAnimatedIcon。请参阅下面的示例徽标。

另一个注意事项是,您的启动屏幕必须是方形的,并且无法扩展太多,但这非常简单。

config.xml
的示例设置:

<platform name="android">
    <preference name="AutoHideSplashScreen" value="true" />
    <preference name="FadeSplashScreen" value="true" />
    <preference name="FadeSplashScreenDuration" value="0" />
    <preference name="AndroidWindowSplashScreenAnimatedIcon" value="resources/android/splash/splash-logo.png" />
    <preference name="AndroidWindowSplashScreenBackground" value="#ffffff" />
</platform>
© www.soinside.com 2019 - 2024. All rights reserved.