我清理构建我的应用程序并看到此错误消息:应用程序图标集“AppIcon”有一个未分配的子项。
当我查看Images.xcassets时,每个图标插槽都填充了正确的图标,并且没有未分配的图标。在过去,XCode似乎随机忘记了一个图标的插槽,并将其放在所有标记的图标插槽下面。在那些场合,我将图标拖回正确的插槽,错误消失了。任何图标大小都没有错误。
我检查了Images.xcassets / AppIcon.appiconset / Contents.json,并且JSON中没有条目空白的条目。
我正在使用XCode 7.2。
我将不胜感激。
答案 0 :(得分:4)
选择未分配的图像并通过删除按钮将其删除。清洁和建设。
答案 1 :(得分:1)
遇到同样的错误,但是以不同的方式解决了它。
在项目中,导航到Assets.xcassets / AppIcon.appiconset / Contents.json 并打开此JSON文件。
查看并删除所有不必要的图标集。
对我来说,它是一组iPad图标(看到该应用程序仅与iPhone兼容,因此不需要)。
删除后,先清理-然后-构建
答案 2 :(得分:0)
我注意到其中4个图标在Content.json中的名称中有一个短划线,但在导航器或文件系统中没有名称中的短划线。我删除并读了这些,警告消失了。当我读完它们时,只有2个在Content.json中有破折号。
这可能是一个XCode错误。
答案 3 :(得分:0)
我在更新Xcode后遇到了这个问题。
在资产目录中,选择导致警告的图像集。可以在图像集的底部找到任何未分配的图像。选择未分配的图像或删除它们。在那之后,干净和构建应该删除警告。
答案 4 :(得分:0)
检查是否选择了正确的图像尺寸。如果显示为放置80x80尺寸的图像,则您只需放置80x80尺寸,不少于不多。
答案 5 :(得分:0)
我拥有计算机科学学位,很尴尬地说我花了多长时间来使应用程序图标适用于我的watchOS应用程序。
这是我认为我学到的:
<key>CFBundlePackageType</key><string>APPL</string>
命名为AppIcons.appiconset
,尽管我不确定这两个都不重要我在下面粘贴了完整的Contents.json。我从Xamarin示例“ WatchKitCatalog”中提取了它。
神速,祝你好运。
{
"images": [
{
"scale": "1x",
"size": "1024x1024",
"idiom": "watch-marketing",
"filename": "icon1024.png"
},
{
"role": "notificationCenter",
"subtype": "38mm",
"scale": "2x",
"size": "24x24",
"idiom": "watch",
"filename": "icon48.png"
},
{
"role": "notificationCenter",
"subtype": "42mm",
"scale": "2x",
"size": "27.5x27.5",
"idiom": "watch",
"filename": "icon55.png"
},
{
"role": "companionSettings",
"scale": "2x",
"size": "29x29",
"idiom": "watch",
"filename": "icon58.png"
},
{
"role": "companionSettings",
"scale": "3x",
"size": "29x29",
"idiom": "watch",
"filename": "icon87.png"
},
{
"role": "appLauncher",
"subtype": "38mm",
"scale": "2x",
"size": "40x40",
"idiom": "watch",
"filename": "icon80.png"
},
{
"role": "appLauncher",
"subtype": "40mm",
"scale": "2x",
"size": "44x44",
"idiom": "watch",
"filename": "Mark_NoType_SM_Trans88x88.png"
},
{
"role": "appLauncher",
"subtype": "44mm",
"scale": "2x",
"size": "50x50",
"idiom": "watch",
"filename": "Mark_NoType_SM_Trans100x100.png"
},
{
"role": "quickLook",
"subtype": "38mm",
"scale": "2x",
"size": "86x86",
"idiom": "watch",
"filename": "icon172.png"
},
{
"role": "quickLook",
"subtype": "42mm",
"scale": "2x",
"size": "98x98",
"idiom": "watch",
"filename": "icon196.png"
},
{
"role": "quickLook",
"subtype": "44mm",
"scale": "2x",
"size": "108x108",
"idiom": "watch",
"filename": "Mark_NoType_SM_Trans216x216.png"
}
],
"properties": {},
"info": {
"version": 1,
"author": "xcode"
}
}
答案 6 :(得分:0)
当图像文件名称中包含特殊字符时,我遇到了未分配孩子的问题。删除特殊字符后,问题得以解决。
答案 7 :(得分:0)
另一个导致此错误的原因:磁盘上和Content.json
中文件名大小写的差异。他们需要匹配。
就我而言,磁盘上的文件名都是小写的,这就是在Content.json
中引用它们的方式。然后我得到了新的图像,它们是大写的,我只是将它们拖到Xcode中以对其进行更新。现在,磁盘和Content.json
都指向大写的文件。
但是Git并没有选择大写的更改,只是认为文件已更新并且没有更改大小写。因此,在构建服务器上,我最终使用小写的文件名,但是Content.json
是指大写的文件名。需要在我的系统上将它们小写并修复Content.json
。
答案 8 :(得分:0)
就我而言,contents.json中的文件名神奇地消失了。
已经从一个新的flutter项目中替换了content.json文件的内容。