为什么 Application Loader 找不到我的图标(错误代码:ERROR ITMS-90023)?

Why does Application Loader not find my icons (error code: ERROR ITMS-90023)?

我想发布一个用 Xamarin 开发的 ios 应用程序。在将 .ipa 文件加载到 Appstore 的最后一步中,我收到了众所周知的消息:

ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '152x152' pixels, in .png format for iOS versions >= 7.0.

ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro.

ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '76x76' pixels, in .png format for iOS versions >= 7.0.

许多人遇到了同样的问题,许多人花了几天或几周的时间来解决这个问题。我已经阅读了我能找到的关于该主题的所有文章,不幸的是,他们提出的解决方案对我不起作用。

我有最新版本的 VS (16.7.6)、Xcode (12.0.1) 和 Xamarin (16.7.0)。 我使用 Transporter 作为应用程序加载器。

设置:

  1. 我的所有图标都是由 Media.xassets AppIcons 在 VS 中设置的。 所有图像都有正确的尺寸。我的原始图像名称是 Icon-76.png、Icon-152.png、Icon-167.png。 VS 使用新名称制作新的物理图标,这些图标与 json-文件相匹配。
{
  "scale": "1x",
  "size": "76x76",
  "idiom": "ipad",
  "filename": "Icon-761.png"
},
{
  "scale": "2x",
  "size": "76x76",
  "idiom": "ipad",
  "filename": "Icon-1521.png"
},
{
  "scale": "2x",
  "size": "83.5x83.5",
  "idiom": "ipad",
  "filename": "Icon-1671.png"
},
  1. Contents.json 很好地映射了图标。

  2. 在 bin\iPhone\Release 中,图标有一个新名称:

    Icon names

  3. .ipa 文件也包含所有内容

  4. Info.plist有

<key>XSAppIconAssets</key>
    <string>Resources/Media.xcassets/AppIcons.appiconset</string> 
<key>CFBundleIconName</key>
    <string>AppIcons</string>
  1. Mac 面正确反映了 Windows 面。所有图片,content.jpg,info.plist都在 Library/Caches/Xamarin/mtbs/builds/.ios//bin/iPhone/Release/..

我在pc端编译,设置如下:

PC side settings

(当我 运行 应用程序在开发者模式下在模拟器和设备上运行良好。)

我删除了所有占位符,我删除了 Resources\Media.xcassets\AppIcons.appiconset 中的所有图标,我删除了 Contents.json "images":[],我删除了所有bin 和 obj。我删除了 mac 边 Library/Caches/Xamarin/mtbs/ 清理了项目。重新启动计算机。

然后我通过assets i VS小心翼翼的放回了所有图片

我又重复了一遍这个程序来检查。

我也尝试过将错误的图像尺寸设置为占位符,但我得到的反馈是图像尺寸错误。

您是否知道问题可能是什么以及接下来要尝试什么?

我发现 filename 有一些错误。

通常,由Icon-scale*size.png定义的filename,但是您的文件名包含 显示了 1 个。

因此,你可以修改filename如下:

{
  "scale": "1x",
  "size": "76x76",
  "idiom": "ipad",
  "filename": "Icon-76.png"
},
{
  "scale": "2x",
  "size": "76x76",
  "idiom": "ipad",
  "filename": "Icon-152.png"
},
{
  "scale": "2x",
  "size": "83.5x83.5",
  "idiom": "ipad",
  "filename": "Icon-167.png"
},

注:也可以定义不带-filename,如Icon167.png.

我做的两个改动:

  1. 我重新创建了配置文件。
  2. 我在 mac 和 运行 程序上安装了 VS。

我的结论是如果你在你的电脑端做的一切都是正确的并且你得到了这个非常奇怪的行为,请确保你的配置文件设置正确并且 运行 程序直接来自你的 mac .

在尝试 Kriba 升级 VS 的解决方案之前 / xCode,我想快速检查创建一个新项目并将我的文件移动到它是否可以解决我的问题。 (因为升级VS/xCode会放大问题,更耗时)

因此,我创建了一个新的 Xamarin.Forms 项目,并使用配对的 Mac 中的 Transporter 工具 上传了 IPA。在 Transporter 工具中,我使用 Verify 选项(而不是 Deliver)来检查是否有任何错误。这个新的 IPA 没有任何问题。所以我确认问题出在旧的 Visual Studio 项目文件上。

在copy/pasting所有文件到新创建的VS项目(Xamarin.Forms)后,Transporter工具中的Verify选项现在结果 成功(已验证状态 - 绿色对勾图标)!

P.S。 : 与在终端中使用命令相比,我发现 Transporter 应用程序更加人性化和有用。