VS(15.6)开发Xamarin.iOS应用图标和开机画面问题

时间:2024-03-03 13:28:01

近期遇到一个非常奇怪的问题,用VS2017开发Xamarin.iOS APP,应用图标和开机画面没有效果。经过反复折腾找到了原因,特此记录下来。
开发环境:Win10专业版,VS2017(15.6)专业版,VMware苹果虚拟机macOS 10.13,Xcode 9.2。Xamarin.iOS版本11.8.0.20。
在VS2017新建一个iPhone单页应用,连上macOS,选择iPhone 6 iOS 11.2,按F5跑一下,查看APP跑起来,确认基础环境没问题。
然后在项目的【资产目录】右键【添加资产目录】,选择文件模版【资产目录】,创建一个Assets文件。
这里写图片描述
双击这个文件,给AppIcon和LaunchImage添加图片,对号入座,跟Xcode差不多。
这里写图片描述
然后双击Info.plist文件,切换到【视觉对象资产】页面,把应用图标设置为AppIcon,启动图像设置为LaunchImage,启动屏幕设置为(未设置)。前面2点跟Xcode差不多,第三点有差异,Xcode是直接删除启动屏幕设置文本框的内容,但是VS2017的启动屏幕是一个无法编辑的下拉框,只能选择未设置。
这里写图片描述
然后双击Resources文件夹下面的LaunchScreen.xib文件,点击视图最外边的方框,把属性【Can be Launch Screen】的打勾去掉。这个跟Xcode类似。
这里写图片描述
然后运行软件,发现应用图标和开机画面没有生效。
以前用低版本做过Xamarin.iOS应用图标和开机画面,是没问题的。更换iPhone模拟器型号和iOS版本无效,参考网上说的关于Xcode开机画面的问题,尝试过复位iPhone模拟器,删除应用等方法都无效。后来在MacOS上安装了Visual Studio for Mac,采用类似的操作,添加了软件图标和启动屏幕,是没问题的!
决定对比一下两个开发工具创建的Info.plist文件。注意用写字板打开,如果用记事本的话没有换行的。发现一个疑点,VS2017多了这么一个键值对,而Visual Studio for Mac没有。

<key>UILaunchStoryboardName</key>
<string>(未设置)</string>
  • 1
  • 2

我觉得这里应该是有问题的,按照Xcode要求,应该是要删除UILaunchStoryboardName这个属性的,VS2017的Info.plist配置明显不符合要求,所以开机画面无效。
把这个属性删除。再次运行,仍然无效。
整个人感觉不好了,难道我真的遇见鬼了?
再次对比Info.plist文件,发现VS2017的图片路径有Resources开头。

<key>XSLaunchImageAssets</key>
<string>Resources/Assets.xcassets/LaunchImage.launchimage</string>
<key>XSAppIconAssets</key>
<string>Resources/Assets.xcassets/AppIcons.appiconset</string>
  • 1
  • 2
  • 3
  • 4

Visual Studio for Mac没有。

<key>XSAppIconAssets</key>
<string>Assets.xcassets/AppIcon.appiconset</string>
<key>XSLaunchImageAssets</key>
<string>Assets.xcassets/LaunchImage.launchimage</string>
  • 1
  • 2
  • 3
  • 4

决定删除Resources/,再次运行,应用图标和开机画面都好了。
这里写图片描述
然后在VS2017再次打开Info.plist的【视觉对象资产】页面,会发现应用图标和启动图像设置为空,此时如果关闭文件窗口,会提示保存。一定不能保存!否则应用图标和开机画面又没了。
这里写图片描述

后来在另外一台电脑上面,用VS2017(15.5),Xamarin.iOS 11.6.1.4做测试,情况有所不同。应用图标没问题,开机画面无效,删除Info.plist文件UILaunchStoryboardName之后,开机画面也好了,并不需要删除Resources。还有一个差异,VS2017(15.5)创建的资产目录名称Media.xcassets。
虽然找到了补救措施,但是很别扭,害得我强迫症又发作了,如果VS2017后续版本不修复此问题,可能还是要改用storyboard做开机画面。

原文链接: https://blog.csdn.net/woodsun2008/article/details/79502465