找不到 AppIcon

Posted

技术标签:

【中文标题】找不到 AppIcon【英文标题】:AppIcon is not being found 【发布时间】:2020-10-21 18:41:17 【问题描述】:

我正在尝试推广一个旧应用程序,但我在应用程序图标应该是简单的东西上碰壁

这是一个超级简单的基于网络的应用程序,因此我使用更新的模板重新制作了该项目,它构建良好,除了应用程序图标之外的所有内容。

当我尝试将我的 ipa 上传到商店时,我收到以下消息:

错误 ITMS-90022:“缺少所需的图标文件。该捆绑包不包含 iPhone / iPod Touch 的应用程序图标,该图标恰好为“120x120”像素,ios 版本为 .png 格式 >= 10.0。 为了支持旧版本的 iOS,在资产目录之外的捆绑包中可能需要该图标。确保 Info.plist 文件包含引用该文件的适当条目。见https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface"

错误 ITMS-90704:“缺少应用程序图标。尺寸为 1024 x 1024 像素的 PNG 格式的应用程序图标必须包含在为 iOS、iPadOS 或 watchOS 构建的应用程序的资产目录中。没有此图标,无法提交应用程序供审查。 详情见https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/."

这是我的 Contents.json 文件的样子:


    "images":[
        
            "idiom":"iphone",
            "size":"20x20",
            "scale":"2x",
            "filename":"Icon-App-20x20@2x.png"
        ,
        
            "idiom":"iphone",
            "size":"20x20",
            "scale":"3x",
            "filename":"Icon-App-20x20@3x.png"
        ,
        
            "idiom":"iphone",
            "size":"29x29",
            "scale":"1x",
            "filename":"Icon-App-29x29@1x.png"
        ,
        
            "idiom":"iphone",
            "size":"29x29",
            "scale":"2x",
            "filename":"Icon-App-29x29@2x.png"
        ,
        
            "idiom":"iphone",
            "size":"29x29",
            "scale":"3x",
            "filename":"Icon-App-29x29@3x.png"
        ,
        
            "idiom":"iphone",
            "size":"40x40",
            "scale":"2x",
            "filename":"Icon-App-40x40@2x.png"
        ,
        
            "idiom":"iphone",
            "size":"40x40",
            "scale":"3x",
            "filename":"Icon-App-40x40@3x.png"
        ,
        
            "idiom":"iphone",
            "size":"60x60",
            "scale":"2x",
            "filename":"Icon-App-60x60@2x.png"
        ,
        
            "idiom":"iphone",
            "size":"60x60",
            "scale":"3x",
            "filename":"Icon-App-60x60@3x.png"
        ,
        
          "size" : "1024x1024",
          "idiom" : "ios-marketing",
          "scale" : "1x",
          "filename" : "ItunesArtwork@2x.png"
        
    ],
    "info":
        "version":1,
        "author":"xcode"
    

这就是我的 csproj 文件中的样子:

    <ItemGroup>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-20x20@1x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-20x20@2x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-20x20@3x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-29x29@1x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-29x29@2x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-29x29@3x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-40x40@1x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-40x40@2x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-40x40@3x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-60x60@2x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-60x60@3x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-76x76@1x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-76x76@2x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon-App-83.5x83.5@2x.png">
        <Visible>false</Visible>
      </ImageAsset>
      <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\ItunesArtwork@2x.png">
        <Visible>false</Visible>
      </ImageAsset>
    </ItemGroup>

文件在它们应该在的地方,我简直不知所措。我还尝试重命名不带破折号的图像,但也没有用。

我有所有必需的图片,所以我不确定为什么应用找不到它。

我什至使用了另一个应用程序的图标集,该应用程序正在工作,但仍然没有。

【问题讨论】:

明确地说,你有文件,对吧?他们只是没有出现? 我知道,它们在正确的文件夹中,一切都在 您是否将它们包含在您的项目中?见this 不是 Xmarin 编码器,但引起我注意的是您说这是一个旧应用程序。几岁?几年前的某个时候,Apple 需要一个 1024x1024 的应用程序图标。我在你的问题中没有看到任何迹象表明存在。几乎任何图像编辑器都应该对您有所帮助。祝你好运! 它是 2011 年的,但我添加了那个尺寸的图像。 【参考方案1】:

我发现filename有一些错误。

一般filenameIcon-scale*size.png 定义,但是您的文件名包含 wrod @3x/@2x 显示更多。

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


  "images": [
    
      "filename": "Icon-App-40.png",
      "size": "20x20",
      "scale": "2x",
      "idiom": "iphone"
    ,
    
      "filename": "Icon-App-60.png",
      "size": "20x20",
      "scale": "3x",
      "idiom": "iphone"
    ,
    
      "filename": "Icon-App-58.png",
      "size": "29x29",
      "scale": "2x",
      "idiom": "iphone"
    ,
    
      "filename": "Icon-App-87.png",
      "size": "29x29",
      "scale": "3x",
      "idiom": "iphone"
    ,
    
      "filename": "Icon-App-80.png",
      "size": "40x40",
      "scale": "2x",
      "idiom": "iphone"
    ,
    
      "filename": "Icon-App-120.png",
      "size": "40x40",
      "scale": "3x",
      "idiom": "iphone"
    ,
    
      "filename": "Icon-App-120.png",
      "size": "60x60",
      "scale": "2x",
      "idiom": "iphone"
    ,
    
      "filename": "Icon-App-180.png",
      "size": "60x60",
      "scale": "3x",
      "idiom": "iphone"
    ,
    
      "filename": "Icon-App-1024.png",
      "size": "1024x1024",
      "scale": "1x",
      "idiom": "ios-marketing"
    
  ],
  "info": 
    "version": 1,
    "author": "xcode"
  

注意:也可以不定义-,定义filename,如Icon40.png

==================================更新============= ====================

<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon1024.png">
  <Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon180.png">
  <Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon167.png">
  <Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon152.png">
  <Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon120.png">

【讨论】:

所以它在我看到应用程序上的图标的意义上起作用,但是当我尝试将其上传到商店时,我仍然收到两个错误,声称 120 和 1024 图标不存在。 @Eman Okey,当您修改 filename 时,.csproj 是否显示为我更新的答案。另外1024大小的png文件的filename最好用Icon-App-1024.png试试。 @Eman 你能显示更新的Contents.json.csproj 文件吗? 用它更新了问题,我直接从我们拥有的新应用程序中复制了它。与通用应用程序相比,它与 iPhone 应用程序的工作方式有什么不同吗? 我发现了我的问题,现在可以正常工作了,谢谢你的帮助:)【参考方案2】:

经过大量的扯头发和选择词后,我得到了它的工作。

问题是,当我删除该文件夹并进行重建时,我正在使用一个包含所有视图控制器和业务逻辑的共享层,并且该项目内部是一个 Assets.xcassets 文件夹,其中包含一些共享图形,我的应用图标回来了,transporter 上传了应用。

所以对于任何使用共享层来存储业务逻辑的人来说,不要有多个 Assets.xcassets 文件夹,因为它们会重叠在你身上。

【讨论】:

这也解决了我的问题。删除binobj 文件夹并重建。【参考方案3】:

我似乎每次必须向AppStore提交更新时都会遇到这个问题,并且每次解决方案都不同。如果我只需要花几个小时就可以了,我认为自己很幸运。这一次,它与 Xamarin 放置 IPA 文件的文件夹有关。如果它把它放在像这里这样的地方:

MyApp\MyApp.iOS\bin\iPhone\Ad-Hoc\device-builds\iphone12.8-14.2

然后我得到错误。如果它去这样的地方:

MyApp\MyApp.iOS\bin\iPhone\Ad-Hoc

然后图标就在那里,并且可以正常工作。我不确定到底是什么决定了它的去向,我的猜测是,如果您在调试配置中对测试设备进行了构建,然后切换到 ad hoc,它认为它仍在为设备构建,因此不包括图标(因为除非您上传到 AppStore,否则不需要它)。因此,在构建候选版本之前,请关闭 VS,重新打开并重新连接 Mac。

然而,似乎有多种因素会导致此问题。

【讨论】:

以上是关于找不到 AppIcon的主要内容,如果未能解决你的问题,请参考以下文章

无效的图像路径 - 在键 'CFBundleIcons':'AppIcon29x29' 错误下引用的路径中找不到图像

无效的图像路径 - 在键“CFBundleIcons”下引用的路径中找不到图像:“AppIcon20x20”[重复]

如何修复错误 ITMS-90032:“无效的图像路径 - 在键 'CFBundleIcons' 下引用的路径中找不到图像:'AppIcon60x60'”?

在 Sierra(测试版)上使用 ImageMagick 时出现“找不到图像”

iOS AppIcon 问题

Assets.xcassets 中缺少 Apple Watch AppIcon for Long-Look 通知