1024 x 1024 icon asset missing for iOS (SOLVED)

Great!

Did you need to add this?

Yes I needed to add this for my app to be validated.
(I mistyped. my precedent post sorry about that)

BTW, the app got denied because it crashed on iPad running iOS 14. No idea if itā€™s related, will investigate and let you know.

I use 1.2.175 alpha (54c1448)

Iā€™m creating a Assets.car by instructions https://defold.com/manuals/ios/

assetutil -I Assets.car
says:

        [
  {
    "AssetStorageVersion" : "Xcode 12.1 (12A7403) via IBCocoaTouchImageCatalogTool",
    "Authoring Tool" : "@(#)PROGRAM:CoreThemeDefinition  PROJECT:CoreThemeDefinition-487\n",
    "CoreUIVersion" : 676,
    "DumpToolVersion" : 609.4,
    "Key Format" : [
      "kCRThemeScaleName",
      "kCRThemeIdiomName",
      "kCRThemeSubtypeName",
      "kCRThemeDimension2Name",
      "kCRThemeIdentifierName",
      "kCRThemeElementName",
      "kCRThemePartName"
    ],
    "MainVersion" : "@(#)PROGRAM:CoreUI  PROJECT:CoreUI-676.1\n",
    "Platform" : "ios",
    "PlatformVersion" : "14.0",
    "SchemaVersion" : 2,
    "StorageVersion" : 17,
    "Timestamp" : 1604911525
  },
  {
    "AssetType" : "Icon Image",
    "BitsPerComponent" : 8,
    "ColorModel" : "RGB",
    "Colorspace" : "srgb",
    "Compression" : "lzfse",
    "Encoding" : "ARGB",
    "Icon Index" : 1,
    "Idiom" : "pad",
    "Image Type" : "kCoreThemeOnePartScale",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Opaque" : true,
    "PixelHeight" : 76,
    "PixelWidth" : 76,
    "RenditionName" : "AppIcon-76@1x.png",
    "Scale" : 1,
    "SHA1Digest" : "945ED94730F8E25DAF6FB80BFDCD969F494B6BAF",
    "SizeOnDisk" : 7015
  },
  {
    "AssetType" : "Icon Image",
    "BitsPerComponent" : 8,
    "ColorModel" : "RGB",
    "Colorspace" : "srgb",
    "Compression" : "lzfse",
    "Encoding" : "ARGB",
    "Icon Index" : 4,
    "Idiom" : "marketing",
    "Image Type" : "kCoreThemeOnePartScale",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Opaque" : true,
    "PixelHeight" : 1024,
    "PixelWidth" : 1024,
    "RenditionName" : "AppIcon-1024@1x.png",
    "Scale" : 1,
    "SHA1Digest" : "7E738FC7C67926170036AF04E3C0369605DB39FC",
    "SizeOnDisk" : 294860
  },
  {
    "AssetType" : "Icon Image",
    "BitsPerComponent" : 8,
    "ColorModel" : "RGB",
    "Colorspace" : "srgb",
    "Compression" : "lzfse",
    "Encoding" : "ARGB",
    "Icon Index" : 0,
    "Idiom" : "phone",
    "Image Type" : "kCoreThemeOnePartScale",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Opaque" : true,
    "PixelHeight" : 120,
    "PixelWidth" : 120,
    "RenditionName" : "AppIcon-120@1x.png",
    "Scale" : 2,
    "SHA1Digest" : "CD3D9A521579DAEDB9FF368433522ED0EEC114B8",
    "SizeOnDisk" : 12282
  },
  {
    "AssetType" : "Icon Image",
    "BitsPerComponent" : 8,
    "ColorModel" : "RGB",
    "Colorspace" : "srgb",
    "Compression" : "lzfse",
    "Encoding" : "ARGB",
    "Icon Index" : 3,
    "Idiom" : "phone",
    "Image Type" : "kCoreThemeOnePartScale",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Opaque" : true,
    "PixelHeight" : 180,
    "PixelWidth" : 180,
    "RenditionName" : "AppIcon-180@1x.png",
    "Scale" : 2,
    "SHA1Digest" : "578785A1A017D232996015F06CE58B21BF064DE5",
    "SizeOnDisk" : 23464,
    "Subtype" : 1792
  },
  {
    "AssetType" : "Icon Image",
    "BitsPerComponent" : 8,
    "ColorModel" : "RGB",
    "Colorspace" : "srgb",
    "Compression" : "lzfse",
    "Encoding" : "ARGB",
    "Icon Index" : 1,
    "Idiom" : "pad",
    "Image Type" : "kCoreThemeOnePartScale",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Opaque" : true,
    "PixelHeight" : 152,
    "PixelWidth" : 152,
    "RenditionName" : "AppIcon-152@1x.png",
    "Scale" : 2,
    "SHA1Digest" : "6ED3C3E2362CCFB22AAE13ABE559B9D1812B1495",
    "SizeOnDisk" : 334
  },
  {
    "AssetType" : "Icon Image",
    "BitsPerComponent" : 8,
    "ColorModel" : "RGB",
    "Colorspace" : "srgb",
    "Compression" : "lzfse",
    "Encoding" : "ARGB",
    "Icon Index" : 2,
    "Idiom" : "pad",
    "Image Type" : "kCoreThemeOnePartScale",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Opaque" : true,
    "PixelHeight" : 167,
    "PixelWidth" : 167,
    "RenditionName" : "AppIcon-167@1x.png",
    "Scale" : 2,
    "SHA1Digest" : "5EA19F8A4B1EB2ACBCDEA765C9BA2EA66853DD3C",
    "SizeOnDisk" : 334
  },
  {
    "AssetType" : "Icon Image",
    "BitsPerComponent" : 8,
    "ColorModel" : "RGB",
    "Colorspace" : "srgb",
    "Compression" : "lzfse",
    "Encoding" : "ARGB",
    "Icon Index" : 0,
    "Idiom" : "phone",
    "Image Type" : "kCoreThemeOnePartScale",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Opaque" : true,
    "PixelHeight" : 180,
    "PixelWidth" : 180,
    "RenditionName" : "AppIcon-180@1x.png",
    "Scale" : 3,
    "SHA1Digest" : "D392E2510D45049E822E57E81CE0C9A290E63284",
    "SizeOnDisk" : 23464
  },
  {
    "AssetType" : "MultiSized Image",
    "Idiom" : "phone",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Scale" : 1,
    "Sizes" : [
      "60x60 index:0 idiom:phone"
    ]
  },
  {
    "AssetType" : "MultiSized Image",
    "Idiom" : "phone",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Scale" : 1,
    "Sizes" : [
      "90x90 index:3 idiom:phone subtype:1792"
    ],
    "Subtype" : 1792
  },
  {
    "AssetType" : "MultiSized Image",
    "Idiom" : "pad",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Scale" : 1,
    "Sizes" : [
      "76x76 index:1 idiom:pad",
      "83x83 index:2 idiom:pad"
    ]
  },
  {
    "AssetType" : "MultiSized Image",
    "Idiom" : "marketing",
    "Name" : "AppIcon",
    "NameIdentifier" : 6849,
    "Scale" : 1,
    "Sizes" : [
      "1024x1024 index:4 idiom:marketing"
    ]
  },
  {
    "AssetType" : "PackedImage",
    "BitsPerComponent" : 8,
    "ColorModel" : "RGB",
    "Colorspace" : "srgb",
    "Compression" : "lzfse",
    "Encoding" : "ARGB",
    "Idiom" : "pad",
    "Name" : "ZZZZPackedAsset-2.1.0-gamut0",
    "Opaque" : true,
    "PixelHeight" : 170,
    "PixelWidth" : 324,
    "RenditionName" : "ZZZZPackedAsset-2.1.0-gamut0",
    "Scale" : 2,
    "SHA1Digest" : "2961B6B76582E61BC005B9691EA127C252652907",
    "SizeOnDisk" : 37154
  }
]

reference it and the icons from game.project

And I get an error after I submit it for review in appstore:

Can you please check the contents of the generated IPA? Does it include all the AppIcon*.png files and the Assets.car file? And does the Info.plist reference the Assets.car file?

*.app file contains Assets.car, and resulting info.plist:

Any changes is needed for info.plist?

Hmm, no, BUT looking at what @Lex wrote a few posts back in this thread:

@Lex did you get the same error as @rsolovjov when you didnā€™t have the ā€œUIRequiresFullScreenā€ key in Info.plist?

I tried it, but no changes. No ideas.
Maybe something wrong with Assets.car file, but assetutil -I Assets.car says there are files.

A search on the internet about UIRequiresFullScreen yields this:

iPad Multitasking support requires all the orientations but your app does not, so you need to opt out of it, just add the UIRequiresFullScreen key to your Xcode projectā€™s Info.plist file and apply the Boolean value YES.

So maybe UIRequiresFullScreen should be added to the default Info.plist? I donā€™t see iPad multitasking being a thing with the majority of games nor most games supporting both portrait and landscape orientations.

I tried with a release version of Defold (1.2.175), but the error remained.

Maybe something with xcode version, targets or capabilities?

To create Assets.car used xcode Version 12.1 (12A7403), iOS Deployment Target: 14.0, UIRequiredDeviceCapabilities: armv7.

Any progress with this ? I encountered same issue

Tomorrow Iā€™m going to try the full review and upload process using a new application to see if I encounter the same problem.

1 Like

Iā€™ve now gone through the whole build and review process and found a few issues:

  • When we bundle the Assets.car file we do so with any subfolders included
    • This is a problem since Asssets.car must be in the root of the application bundle.
  • We do not use exactly the same app icon names and distribution of icons as in an Xcode build.
    • Xcode always uses the prefix ā€œAppIconā€ while Defold uses ā€œIcon-ā€.
    • Xcode uses one CFBundleIcons for iPhone and another for iPad while Defold uses a single CFBundleIcons for both.
    • This is mostly a problem when comparing an Xcode build with a Defold build in search of discrepancies.
  • The instructions in the manual did not specifically say that when you build the project to get the Assets.car file you must make sure to select ā€œBuild -> Any iOS Device (arm64)ā€ to ensure that all icons get included in the Assets.car

The fixes we have made:

  • The Assets.car is always copied to the bundle root
  • bob.jar now bundle with the same icon names as Xcode
  • The Info.plist file uses the correct naming and separation between iPhone and iPad
  • The manual has been updated

I have tested all of the above and successfully published a test game:

The changes are available on the dev branch and will be released on December 7th. You can test in bob.jar or the editor downloaded from: http://d.defold.com/alpha/

4 Likes

I just noticed that you can make Assets.car files using the actool CLI tool. Any chance this could be included in the build pipeline?

https://developer.apple.com/forums/thread/42719

Hmm, yeah, but it still requires Xcode in the background right? Iā€™m not sure if we are allowed to redistribute actool as a part of bob.jar either.

Donā€™t you already use codesign for iOS builds from Xcode, which makes non-macOS iOS bundling impossible anyway?

Weā€™ve split it up so that we can do bundling on all platforms. (signing is optional in the bundle dialog)
And once you have an .ipa/.app, you can sign it elsewhere (e.g. online) if you want. There are some tools open sourced that could potentially be compiled to run on linux/windows (I got it half working once).

Iā€™m reluctant to add (more) macOS specific tools into the toolchain though.

1 Like

Did those issues only pop up while the app was in review? I just successfully submitted an app build with 1.2.175 to review. Do I need to prepare for the app being rejected?

I was having troubles uploading it via Transporter. It was a new app, without previous review from Apple on 1.2.175. Errors was about missing Assets file. So using alpha version of 1.2.176 everything uploaded successfully. So i think if you uploaded it without errors, everything will be fine on review.

1 Like

If it uploads without errors your should be fine.

thanks. just to follow up: the app was approved as predicted.

1 Like