科多瓦(Cordova)iOS图标(和启动画面)在使用Ionic资源时无法显示

6
我知道关于这个问题已经有很多帖子了,但是它们都没有起作用。我的Android平台运行良好,显示应用程序图标和启动画面,但iOS平台却不显示它们。我尝试了许多不同的文件夹位置,并使用ionic resources自动生成图片文件并将它们放入正确的文件夹中,同时还填充了config.xml文件,这应该可以工作。我甚至不知道应用程序从哪里获取Cordova机器人图像,找不到它的任何地方。我已经运行了命令cordova platform rm ios && cordova platform add iosionic platform rm ios && ionic platform add ios,但是都没有成功。我正在使用带有Ionic的Cordova 6.1.1。
以下是config.xml中自动生成的内容:
<icon src="resources\android\icon\drawable-xhdpi-icon.png"/>
  <platform name="ios">
    <preference name="KeyboardDisplayRequiresUserAction" value="false"/>
    <icon src="resources\ios\icon\icon.png" width="57" height="57"/>
    <icon src="resources\ios\icon\icon@2x.png" width="114" height="114"/>
    <icon src="resources\ios\icon\icon-40.png" width="40" height="40"/>
    <icon src="resources\ios\icon\icon-40@2x.png" width="80" height="80"/>
    <icon src="resources\ios\icon\icon-50.png" width="50" height="50"/>
    <icon src="resources\ios\icon\icon-50@2x.png" width="100" height="100"/>
    <icon src="resources\ios\icon\icon-60.png" width="60" height="60"/>
    <icon src="resources\ios\icon\icon-60@2x.png" width="120" height="120"/>
    <icon src="resources\ios\icon\icon-60@3x.png" width="180" height="180"/>
    <icon src="resources\ios\icon\icon-72.png" width="72" height="72"/>
    <icon src="resources\ios\icon\icon-72@2x.png" width="144" height="144"/>
    <icon src="resources\ios\icon\icon-76.png" width="76" height="76"/>
    <icon src="resources\ios\icon\icon-76@2x.png" width="152" height="152"/>
    <icon src="resources\ios\icon\icon-small.png" width="29" height="29"/>
    <icon src="resources\ios\icon\icon-small@2x.png" width="58" height="58"/>
    <icon src="resources\ios\icon\icon-small@3x.png" width="87" height="87"/>
    <splash src="resources\ios\splash\Default-568h@2x~iphone.png" width="640" height="1136"/>
    <splash src="resources\ios\splash\Default-667h.png" width="750" height="1334"/>
    <splash src="resources\ios\splash\Default-736h.png" width="1242" height="2208"/>
    <splash src="resources\ios\splash\Default-Portrait@2x~ipad.png" width="1536" height="2048"/>
    <splash src="resources\ios\splash\Default-Portrait~ipad.png" width="768" height="1024"/>
    <splash src="resources\ios\splash\Default@2x~iphone.png" width="640" height="960"/>
    <splash src="resources\ios\splash\Default~iphone.png" width="320" height="480"/>
  </platform>
  <platform name="android">
    <icon src="resources\android\icon\drawable-ldpi-icon.png" density="ldpi"/>
    <icon src="resources\android\icon\drawable-mdpi-icon.png" density="mdpi"/>
    <icon src="resources\android\icon\drawable-hdpi-icon.png" density="hdpi"/>
    <icon src="resources\android\icon\drawable-xhdpi-icon.png" density="xhdpi"/>
    <icon src="resources\android\icon\drawable-xxhdpi-icon.png" density="xxhdpi"/>
    <icon src="resources\android\icon\drawable-xxxhdpi-icon.png" density="xxxhdpi"/>
    <splash src="resources\android\splash\drawable-port-ldpi-screen.png" density="port-ldpi"/>
    <splash src="resources\android\splash\drawable-port-mdpi-screen.png" density="port-mdpi"/>
    <splash src="resources\android\splash\drawable-port-hdpi-screen.png" density="port-hdpi"/>
  </platform>

为什么这在安卓上能够运行而在iOS上不能?每个人似乎都能找到自己的问题答案,但是似乎没有通用的答案。我需要尽快启动它,但如果没有正确的应用程序图标,我无法启动它。有人可以提出任何建议吗?


你能提供iOS的文件结构(项目结构)吗?在Android中,路径是相对的,在iOS中路径是绝对的。因此,如果你像在Android中一样给出路径,它在iOS中将无法工作。 - NGB
所以,就结构而言,“resources”文件夹位于项目的顶层。因此,我不知道这是否会有所区别,因为它们都将从相同的级别向下遍历(无论是绝对还是相对)。我可以假设我的理解是正确的吗? - AndrewK
1
资源文件在 config.xml 旁边?根据 config.xml 中的路径。而且 '/' '' 这些符号很重要。 - NGB
我现在真的想亲你一口。我在Windows上使用Visual Studio,而Windows会自动将斜杠“\”替换为“/”,但是我在我的Mac上编译它时,它默默地失败了。我真的花了好几天来解决这个问题。谢谢你。 - AndrewK
你可以给我的评论点赞。 - NGB
3个回答

7

Nauveen发现了一个问题。如果你在Windows上使用Visual Studio,并在Mac上的远程服务器上编译它,Windows将使用反斜杠而不是正斜杠。这对于Android来说是正确的,但是iOS需要你将反斜杠转换为正斜杠才能找到图像的正确路径。如果你在Windows上编译Android并在远程Mac上编译iOS,则你的config.xml文件中自动生成的文件应该如下所示:

<icon src="resources\android\icon\drawable-xhdpi-icon.png"/>
  <platform name="ios">
    <preference name="KeyboardDisplayRequiresUserAction" value="false"/>
    <icon src="resources/ios/icon/icon.png" width="57" height="57"/>
    <icon src="resources/ios/icon/icon@2x.png" width="114" height="114"/>
    <icon src="resources/ios/icon/icon-40.png" width="40" height="40"/>
    <icon src="resources/ios/icon/icon-40@2x.png" width="80" height="80"/>
    <icon src="resources/ios/icon/icon-50.png" width="50" height="50"/>
    <icon src="resources/ios/icon/icon-50@2x.png" width="100" height="100"/>
    <icon src="resources/ios/icon/icon-60.png" width="60" height="60"/>
    <icon src="resources/ios/icon/icon-60@2x.png" width="120" height="120"/>
    <icon src="resources/ios/icon/icon-60@3x.png" width="180" height="180"/>
    <icon src="resources/ios/icon/icon-72.png" width="72" height="72"/>
    <icon src="resources/ios/icon/icon-72@2x.png" width="144" height="144"/>
    <icon src="resources/ios/icon/icon-76.png" width="76" height="76"/>
    <icon src="resources/ios/icon/icon-76@2x.png" width="152" height="152"/>
    <icon src="resources/ios/icon/icon-small.png" width="29" height="29"/>
    <icon src="resources/ios/icon/icon-small@2x.png" width="58" height="58"/>
    <icon src="resources/ios/icon/icon-small@3x.png" width="87" height="87"/>
    <splash src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" height="1136"/>
    <splash src="resources/ios/splash/Default-667h.png" width="750" height="1334"/>
    <splash src="resources/ios/splash/Default-736h.png" width="1242" height="2208"/>
    <splash src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" height="2048"/>
    <splash src="resources/ios/splash/Default-Portrait~ipad.png" width="768" height="1024"/>
    <splash src="resources/ios/splash/Default@2x~iphone.png" width="640" height="960"/>
    <splash src="resources/ios/splash/Default~iphone.png" width="320" height="480"/>
  </platform>
  <platform name="android">
    <icon src="resources\android\icon\drawable-ldpi-icon.png" density="ldpi"/>
    <icon src="resources\android\icon\drawable-mdpi-icon.png" density="mdpi"/>
    <icon src="resources\android\icon\drawable-hdpi-icon.png" density="hdpi"/>
    <icon src="resources\android\icon\drawable-xhdpi-icon.png" density="xhdpi"/>
    <icon src="resources\android\icon\drawable-xxhdpi-icon.png" density="xxhdpi"/>
    <icon src="resources\android\icon\drawable-xxxhdpi-icon.png" density="xxxhdpi"/>
    <splash src="resources\android\splash\drawable-port-ldpi-screen.png" density="port-ldpi"/>
    <splash src="resources\android\splash\drawable-port-mdpi-screen.png" density="port-mdpi"/>
    <splash src="resources\android\splash\drawable-port-hdpi-screen.png" density="port-hdpi"/>
    <splash src="resources\android\splash\drawable-port-xhdpi-screen.png" density="port-xhdpi"/>
    <splash src="resources\android\splash\drawable-port-xxhdpi-screen.png" density="port-xxhdpi"/>
    <splash src="resources\android\splash\drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/>

无论您的开发操作系统是从Mac更改为Windows或反之,您都必须运行“ionic resources”命令。 - MobileEvangelist
太好了!省了我很多时间。 - Kai G

2
尝试安装这个插件。
cordova-plugin-splashscreen

运行 cordova plugin add cordova-plugin-splashscreen 命令来添加 cordova-plugin-splashscreen 插件。

然后在你的 config.xml 文件中添加以下几行代码(不要放在 platform ios 或 android 中,而是与其他 preferences 平级)。

  <preference name="SplashScreenDelay" value="30000"/>
  <preference name="AutoHideSplashScreen" value="true"/>
  <preference name="FadeSplashScreen" value="false"/>
  <preference name="ShowSplashScreenSpinner" value="false"/>

在 ionic 平台准备好后,您的 app.run 函数中添加以下行:
 if(navigator && navigator.splashscreen) navigator.splashscreen.hide();

0

请检查:

图标的最小尺寸应为192x192像素。

闪屏图片的最小尺寸应为2208x2208像素。

如果小于最小尺寸,ionic resources将无法工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接