Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publishing iOS app to App Store fails with Asset Validation Errors #18991

Closed
RobSchoenaker opened this issue Sep 11, 2023 · 10 comments
Closed

Publishing iOS app to App Store fails with Asset Validation Errors #18991

RobSchoenaker opened this issue Sep 11, 2023 · 10 comments
Labels
need-attention An issue requires our attention/response
Milestone

Comments

@RobSchoenaker
Copy link

This error is preventing me from sending an updated version of my iOS App to Apple for validation. To mitigate the issue, I tried creating a new sample app to test and this gives the same results.

Steps to Reproduce

  1. Create a new iOS Tabbed App in Visual Studio for Mac
  2. Run the app in a physical device (iPhone) and verifies it runs. I am using iOS 17 beta with the latest fix for iOS 17 on VS for Mac
  3. Archive the app and sign it with a valid desitribution profile
  4. Upload the App through Transporter and get the following errors:

Asset validation failed (90704)
Missing App Icon. An app icon measuring 1024 by 1024 pixels in PNG format must be included in the Asset Catalog of apps built for iOS, iPadOS, or watchOS. Without this icon, apps cannot be submitted for review. For details, see https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/. (ID: 7841a3bc-7991-41bf-a31a-2e1a5ee699ba)

Asset validation failed (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 >= 10.0. To support older operating systems, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface (ID: 737951a9-54fb-46ab-8fef-e24878fa1b35)

Asset validation failed (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. To support older operating systems, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface (ID: e0c1d9a5-9b80-47c5-b031-bb248b127564)

Expected Behavior

The assets should be included in the app so that Transporter can successfully send the App to Apple

Actual Behavior

Cannot pass asset validation after the App is uploaded

Environment

Version information
Visual Studio Community 2022 for Mac
Version 17.6.3 (build 421)
Installation UUID: 5b9cb50e-cd8f-4870-bffd-fccff07c2ac5

Runtime
.NET 7.0.3 (64-bit)
Architecture: X64
Microsoft.macOS.Sdk 13.1.1007; git-rev-head:8afca776a0a96613dfb7200e0917bb57f9ed5583; git-branch:release/7.0.1xx-xcode14.2

Roslyn (Language Service)
4.6.0-3.23180.6+99e956e42697a6dd886d1e12478ea2b27cceacfa

NuGet
Version: 6.4.0.117

.NET SDK (x64)
SDK: /usr/local/share/dotnet/sdk/7.0.307/Sdks
SDK Versions:
	7.0.307
	7.0.306
	7.0.304
	7.0.203
	7.0.202
	7.0.201
	7.0.101
	7.0.100
	6.0.413
	6.0.412
	6.0.410
	6.0.408
	6.0.407
	6.0.406
	6.0.404
	6.0.403
	6.0.401
	6.0.400
	6.0.302
	6.0.301
	6.0.108
	5.0.408
	5.0.406
	5.0.401
	3.1.426
	3.1.425
	3.1.423
	3.1.422
	3.1.420
	3.1.417
	3.1.413
	3.1.403
	3.1.402
	2.1.403
MSBuild SDKs: /Applications/Visual Studio.app/Contents/MonoBundle/MSBuild/Current/bin/Sdks

.NET Runtime (x64)
Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
	7.0.10
	7.0.9
	7.0.7
	7.0.5
	7.0.4
	7.0.3
	7.0.1
	7.0.0
	6.0.21
	6.0.20
	6.0.18
	6.0.16
	6.0.15
	6.0.14
	6.0.12
	6.0.11
	6.0.9
	6.0.8
	6.0.7
	6.0.6
	5.0.17
	5.0.15
	5.0.10
	3.1.32
	3.1.31
	3.1.29
	3.1.28
	3.1.26
	3.1.23
	3.1.19
	3.1.9
	3.1.8
	2.1.23
	2.1.22
	2.1.5

Xamarin.Profiler
Version: 1.8.0.49
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

Updater
Version: 11

Apple Developer Tools
Xcode: 14.3.1 21815
Build: 14E300c

Xamarin.Mac
Version: 9.3.0.6 Visual Studio Community
Hash: 97731c92c
Branch: xcode14.3
Build date: 2023-04-11 22:38:35-0400

Xamarin.iOS
Version: 16.4.0.18 Visual Studio Community
Hash: 9d266025e
Branch: xcode14.3
Build date: 2023-09-06 19:52:27-0400

Xamarin Designer
Version: 17.6.3.9
Hash: 2648399ae8
Branch: remotes/origin/d17-6
Build date: 2023-08-02 19:04:23 UTC

Xamarin.Android
Version: 13.2.1.2 (Visual Studio Community)
Commit: xamarin-android/d17-5/a8a26c7
Android SDK: /Users/robschoenaker/Library/Developer/Xamarin/android-sdk-macosx
	Supported Android versions:
		12.0 (API level 31)
		4.4  (API level 19)
		5.0  (API level 21)
		11.0 (API level 30)
		10.0 (API level 29)
		9.0  (API level 28)
		13.0 (API level 33)

SDK Command-line Tools Version: 7.0
SDK Platform Tools Version: 34.0.3
SDK Build Tools Version: 33.0.0

Build Information: 
Mono: d9a6e87
Java.Interop: xamarin/java.interop/d17-5@149d70fe
SQLite: xamarin/sqlite/3.40.1@68c69d8
Xamarin.Android Tools: xamarin/xamarin-android-tools/d17-5@ca1552d

Microsoft Build of OpenJDK
Java SDK: /Library/Java/JavaVirtualMachines/microsoft-11.jdk
11.0.16.1
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

Eclipse Temurin JDK
Java SDK: /Library/Java/JavaVirtualMachines/temurin-8.jdk
1.8.0.302
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

Android SDK Manager
Version: 17.6.0.50
Hash: a715dca
Branch: HEAD
Build date: 2023-08-02 19:04:28 UTC

Android Device Manager
Version: 0.0.0.1309
Hash: 06e3e77
Branch: HEAD
Build date: 2023-08-02 19:04:28 UTC

Build Information
Release ID: 1706030421
Git revision: c90350679f1b9295edc584519320b13d06489853
Build date: 2023-08-02 19:02:50+00
Build branch: release-17.6
Build lane: release-17.6

Operating System
Mac OS X 13.5.2
Darwin 22.6.0 Darwin Kernel Version 22.6.0
    Wed Jul  5 22:21:56 PDT 2023
    root:xnu-8796.141.3~6/RELEASE_X86_64 x86_64


Build Logs

Example Project (If Possible)

@rolfbjarne
Copy link
Member

Does your app have these required assets? A new project from a template isn't guaranteed to contain all the assets required to publish the app to the app store (in particular because those would just be placeholder assets anyway).

@rolfbjarne rolfbjarne added the need-info Waiting for more information before the bug can be investigated label Sep 11, 2023
@microsoft-github-policy-service
Copy link
Contributor

Hi @RobSchoenaker. We have added the "need-info" label to this issue, which indicates that we have an open question for you before we can take further action. This issue will be closed automatically in 7 days if we do not hear back from you by then - please feel free to re-open it if you come back to this issue after that time.

@rolfbjarne rolfbjarne added this to the Future milestone Sep 11, 2023
@RobSchoenaker
Copy link
Author

@rolfbjarne thx for the swift response. This is just a new empty 'Tabbed Page App' I made and changed the bundle identifier to an existing app I have (for which publishing fails).
If I manage to get this simple app published, I think I can manage to get the other app published too.

The new (empty) app contains place holder images - correct. I would expect these images to be sufficient. The info.plist and Assets.xcassets look normal.

Info.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDisplayName</key>
	<string>DKGTest</string>
	<key>CFBundleIdentifier</key>
	<string>com.rockndonkeys.duikersgids</string>
	<key>CFBundleShortVersionString</key>
	<string>2.8.29</string>
	<key>CFBundleVersion</key>
	<string>2.8.29</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UIApplicationSceneManifest</key>
	<dict>
		<key>UIApplicationSupportsMultipleScenes</key>
		<true/>
		<key>UISceneConfigurations</key>
		<dict>
			<key>UIWindowSceneSessionRoleApplication</key>
			<array>
				<dict>
					<key>UISceneConfigurationName</key>
					<string>Default Configuration</string>
					<key>UISceneDelegateClassName</key>
					<string>SceneDelegate</string>
					<key>UISceneStoryboardFile</key>
					<string>Main</string>
				</dict>
			</array>
		</dict>
	</dict>
	<key>MinimumOSVersion</key>
	<string>16.4</string>
	<key>UIDeviceFamily</key>
	<array>
		<integer>1</integer>
		<integer>2</integer>
	</array>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIMainStoryboardFile</key>
	<string>Main</string>
	<key>UIMainStoryboardFile~ipad</key>
	<string>Main</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>armv7</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
	<key>UISupportedInterfaceOrientations~ipad</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
	<key>XSAppIconAssets</key>
	<string>Assets.xcassets/AppIcon.appiconset</string>
</dict>
</plist>

What additional info do you need?

@microsoft-github-policy-service microsoft-github-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Sep 11, 2023
@rolfbjarne
Copy link
Member

The new (empty) app contains place holder images - correct. I would expect these images to be sufficient.

That's not necessarily the case: Apple changes the publishing requirements every now and then, and we don't always keep track of them and update the templates.

Can you try adding the required assets to the project and see if that helps?

@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated and removed need-attention An issue requires our attention/response labels Sep 11, 2023
@microsoft-github-policy-service
Copy link
Contributor

Hi @RobSchoenaker. We have added the "need-info" label to this issue, which indicates that we have an open question for you before we can take further action. This issue will be closed automatically in 7 days if we do not hear back from you by then - please feel free to re-open it if you come back to this issue after that time.

@RobSchoenaker
Copy link
Author

Thanks and I see. Have been struggling to get my app to be reviewed and finally managed to find the issue. You are correct in stating that "Apple changes the publishing requirements every now and then, and we don't always keep track of them and update the templates."

It would be very useful for developers to know what they need to do to get their app approved. A single Knowledge Base article would suffice. When the requirements changes, the app and some files need to be changed too. The info.plist I sent in my last post 'clearly' states the missing pieces. I do not have access to the correct info.plist at the moment, but I will attach it here and outline the required bits in a day or two.

@microsoft-github-policy-service microsoft-github-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Sep 12, 2023
@rolfbjarne
Copy link
Member

It would be very useful for developers to know what they need to do to get their app approved.

Agreed, but the problem is that only Apple knows that. If we try to document it, it will inevitably be out of date, and then we'll have people complaining that our documentation is out of date :/

I do not have access to the correct info.plist at the moment, but I will attach it here and outline the required bits in a day or two.

OK.

@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated and removed need-attention An issue requires our attention/response labels Sep 13, 2023
@microsoft-github-policy-service
Copy link
Contributor

Hi @RobSchoenaker. We have added the "need-info" label to this issue, which indicates that we have an open question for you before we can take further action. This issue will be closed automatically in 7 days if we do not hear back from you by then - please feel free to re-open it if you come back to this issue after that time.

@RobSchoenaker
Copy link
Author

I have really been pulling my hair out over the course of several weeks in order to get the app reviewed. Especially since iOS 17 is released today, I consider myself lucky to be able to publish an iOS17 compatible app.
There are 3 steps involved in getting the app to pass Transporter and eventually being able to push it to the App Store.

First, the info.plist needs to be completed:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleIconFile</key>
	<string>AppIcon</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDisplayName</key>
	<string>Duikersgids</string>
	<key>CFBundleIdentifier</key>
	<string>com.rockndonkeys.duikersgids</string>
	<key>CFBundleLocalizations</key>
	<array>
		<string>nl</string>
		<string>en</string>
	</array>
	<key>CFBundleName</key>
	<string>DuikersGids</string>
	<key>CFBundleShortVersionString</key>
	<string>2.8.30</string>
	<key>CFBundleVersion</key>
	<string>2.8.30</string>
	<key>MinimumOSVersion</key>
	<string>15.0</string>
	<key>NSAppleMusicUsageDescription</key>
	<string>This app does not acces your Music library</string>
	<key>NSBluetoothAlwaysUsageDescription</key>
	<string>This app can use Bluetooth to communicate with devices nearby.</string>
	<key>NSCalendarsUsageDescription</key>
	<string>This app needs access to your calendar in case of planning events</string>
	<key>NSCameraUsageDescription</key>
	<string>This app needs access to the camera to take photos.</string>
	<key>NSContactsUsageDescription</key>
	<string>This app may request access to your contacts when you share data with your contacts</string>
	<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
	<string>This app uses your location to show services nearby.</string>
	<key>NSLocationUsageDescription</key>
	<string>This app need access to you location to get spots and shops close to you.</string>
	<key>NSLocationWhenInUseUsageDescription</key>
	<string>This app need access to you location to get spots and shops close to you.</string>
	<key>NSMicrophoneUsageDescription</key>
	<string>This app does not acces your microphone</string>
	<key>NSPhotoLibraryAddUsageDescription</key>
	<string>This app needs access to the photo gallery for picking photos and videos.</string>
	<key>NSPhotoLibraryUsageDescription</key>
	<string>This app needs access to photos gallery for picking photos and videos.</string>
	<key>NSSiriUsageDescription</key>
	<string>This app does not acces your Siri usage data</string>
	<key>UIAppFonts</key>
	<array>
		<string>Avenir-Next.ttf</string>
		<string>AvenirNext-DemiBold.ttf</string>
		<string>MaterialIcons-Regular.ttf</string>
		<string>MaterialIconsOutlined-Regular.otf</string>
		<string>MaterialIconsRound-Regular.otf</string>
	</array>
	<key>UIDeviceFamily</key>
	<array>
		<integer>1</integer>
		<integer>2</integer>
	</array>
	<key>UILaunchStoryboardName</key>
	<string>Launch Screen.storyboard</string>
	<key>UIMainStoryboardFile</key>
	<string></string>
	<key>UIRequiresFullScreen</key>
	<true/>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UISupportedInterfaceOrientations~ipad</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UIUserInterfaceStyle</key>
	<string>Light</string>
	<key>XSAppIconAssets</key>
	<string>Assets.xcassets/AppIcon.appiconset</string>
	<key>CFBundleIcons</key>
	<dict>
		<key>CFBundlePrimaryIcon</key>
		<dict>
			<key>CFBundleIconName</key>
			<string>AppIcon</string>
		</dict>
	</dict>
</dict>
</plist>

Specifically, I had to add the <key>CFBundleIconFile</key><string>AppIcon</string> and the <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> at the bottom.

Next,. I removed all icons from the Assets.xcassets and added a single AppIcon of 1024x1024 pixels. Square, PNG without transparency. The settings for the icon in Xcode 14.3 are:

Name AppIcon
iOS Single Size
macOS None
watchOS None
Gamut Any

With these settings, I archived the app setting the 'iOS Build Only Device' to Generic Device (This is the last option in the list and marked by an Xcode icon)

After archiving, I was able to send the app through Transporter without any issues. And after Thasporter, I could link the app to a new release and submit it for review.

In case anyone has similar issues, I hope this is useful.

@microsoft-github-policy-service microsoft-github-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Sep 13, 2023
@josueeap
Copy link

I have really been pulling my hair out over the course of several weeks in order to get the app reviewed. Especially since iOS 17 is released today, I consider myself lucky to be able to publish an iOS17 compatible app. There are 3 steps involved in getting the app to pass Transporter and eventually being able to push it to the App Store.

First, the info.plist needs to be completed:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleIconFile</key>
	<string>AppIcon</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDisplayName</key>
	<string>Duikersgids</string>
	<key>CFBundleIdentifier</key>
	<string>com.rockndonkeys.duikersgids</string>
	<key>CFBundleLocalizations</key>
	<array>
		<string>nl</string>
		<string>en</string>
	</array>
	<key>CFBundleName</key>
	<string>DuikersGids</string>
	<key>CFBundleShortVersionString</key>
	<string>2.8.30</string>
	<key>CFBundleVersion</key>
	<string>2.8.30</string>
	<key>MinimumOSVersion</key>
	<string>15.0</string>
	<key>NSAppleMusicUsageDescription</key>
	<string>This app does not acces your Music library</string>
	<key>NSBluetoothAlwaysUsageDescription</key>
	<string>This app can use Bluetooth to communicate with devices nearby.</string>
	<key>NSCalendarsUsageDescription</key>
	<string>This app needs access to your calendar in case of planning events</string>
	<key>NSCameraUsageDescription</key>
	<string>This app needs access to the camera to take photos.</string>
	<key>NSContactsUsageDescription</key>
	<string>This app may request access to your contacts when you share data with your contacts</string>
	<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
	<string>This app uses your location to show services nearby.</string>
	<key>NSLocationUsageDescription</key>
	<string>This app need access to you location to get spots and shops close to you.</string>
	<key>NSLocationWhenInUseUsageDescription</key>
	<string>This app need access to you location to get spots and shops close to you.</string>
	<key>NSMicrophoneUsageDescription</key>
	<string>This app does not acces your microphone</string>
	<key>NSPhotoLibraryAddUsageDescription</key>
	<string>This app needs access to the photo gallery for picking photos and videos.</string>
	<key>NSPhotoLibraryUsageDescription</key>
	<string>This app needs access to photos gallery for picking photos and videos.</string>
	<key>NSSiriUsageDescription</key>
	<string>This app does not acces your Siri usage data</string>
	<key>UIAppFonts</key>
	<array>
		<string>Avenir-Next.ttf</string>
		<string>AvenirNext-DemiBold.ttf</string>
		<string>MaterialIcons-Regular.ttf</string>
		<string>MaterialIconsOutlined-Regular.otf</string>
		<string>MaterialIconsRound-Regular.otf</string>
	</array>
	<key>UIDeviceFamily</key>
	<array>
		<integer>1</integer>
		<integer>2</integer>
	</array>
	<key>UILaunchStoryboardName</key>
	<string>Launch Screen.storyboard</string>
	<key>UIMainStoryboardFile</key>
	<string></string>
	<key>UIRequiresFullScreen</key>
	<true/>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UISupportedInterfaceOrientations~ipad</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
	<key>UIUserInterfaceStyle</key>
	<string>Light</string>
	<key>XSAppIconAssets</key>
	<string>Assets.xcassets/AppIcon.appiconset</string>
	<key>CFBundleIcons</key>
	<dict>
		<key>CFBundlePrimaryIcon</key>
		<dict>
			<key>CFBundleIconName</key>
			<string>AppIcon</string>
		</dict>
	</dict>
</dict>
</plist>

Specifically, I had to add the <key>CFBundleIconFile</key><string>AppIcon</string> and the <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> at the bottom.

Next,. I removed all icons from the Assets.xcassets and added a single AppIcon of 1024x1024 pixels. Square, PNG without transparency. The settings for the icon in Xcode 14.3 are:

Name AppIcon
iOS Single Size
macOS None
watchOS None
Gamut Any

With these settings, I archived the app setting the 'iOS Build Only Device' to Generic Device (This is the last option in the list and marked by an Xcode icon)

After archiving, I was able to send the app through Transporter without any issues. And after Thasporter, I could link the app to a new release and submit it for review.

In case anyone has similar issues, I hope this is useful.

Thanks Rob, this worked for me, you have to archive with Generic Device setting

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
need-attention An issue requires our attention/response
Projects
None yet
Development

No branches or pull requests

3 participants