Asset validation failed problem while uploading QT (Runtime SDK for QT ) Application to the Apple Store

2110
3
Jump to solution
11-13-2022 04:35 AM
Labels (2)
tanerkoka
Occasional Contributor II

Hi,

I developed a Routing Map ( using Arcgis Runtime sdk for QT ) application in Qt (5.15.2 for iOS) for iOS devices on a MacBook computer. I am getting an error while uploading the Qt application after product with archive in Xcode to Apple Sore.

I don't have any problems with the Xcode 14.1 (Code Signing Identity : Apple Distribution : My Development Team, Code Signing Style : Manual, Provisioning profile : Compatible with the team) part, but can you help me solve the error that I think is related to the Qt application icons or icons files? 

If this doesn't solve the problem, the app won't be uploaded to the app store, can you help?

Here is error picure below:

image.png

 XCode Deployment Infor and  App Icons and Launch Screen picture below:

Deployment.png

 

Here is also QT  İOS folder structure and files : 

iOS Folder.pngimage.xcassets.pngicons.png

Info.plist file:

<?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>My App Name</string>
<key>CFBundleExecutable</key>
<string>My App Name</string>
<key>CFBundleGetInfoString</key>
<string>ArcGIS</string>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon_29.png</string>
<string>Icon_40.png</string>
<string>Icon_50.png</string>
<string>Icon_57.png</string>
<string>Icon_58.png</string>
<string>Icon_72.png</string>
<string>Icon_76.png</string>
<string>Icon_80.png</string>
<string>Icon_100.png</string>
<string>Icon_114.png</string>
<string>Icon_120.png</string>
<string>Icon_144.png</string>
<string>Icon_152.png</string>

</array>
</dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon_29.png</string>
<string>Icon_40.png</string>
<string>Icon_50.png</string>
<string>Icon_57.png</string>
<string>Icon_58.png</string>
<string>Icon_72.png</string>
<string>Icon_76.png</string>
<string>Icon_80.png</string>
<string>Icon_100.png</string>
<string>Icon_114.png</string>
<string>Icon_120.png</string>
<string>Icon_144.png</string>
<string>Icon_152.png</string>
</array>
</dict>
</dict>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NOTE</key>
<string>Built with ArcGIS Runtime SDK for Qt.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string></string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>UIFileSharingEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string></string>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIRequiresPersistentWiFi</key>
<string>NO</string>
<key>UIStatusBarStyle</key>
<string></string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
</dict>
</plist>

 

Contents.js file :

{
"images" : [
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon_29.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon_58.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon_80.png",
"scale" : "2x"
},
{
"size" : "57x57",
"idiom" : "iphone",
"filename" : "Icon_57.png",
"scale" : "1x"
},
{
"size" : "57x57",
"idiom" : "iphone",
"filename" : "Icon_114.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon_120.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon_29.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon_58.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon_40.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon_80.png",
"scale" : "2x"
},
{
"size" : "50x50",
"idiom" : "ipad",
"filename" : "Icon_50.png",
"scale" : "1x"
},
{
"size" : "50x50",
"idiom" : "ipad",
"filename" : "Icon_100.png",
"scale" : "2x"
},
{
"size" : "72x72",
"idiom" : "ipad",
"filename" : "Icon_72.png",
"scale" : "1x"
},
{
"size" : "72x72",
"idiom" : "ipad",
"filename" : "Icon_144.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon_76.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon_152.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

iOS.pri file :

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

ios_icon.files = $$files($$PWD/Images.xcassets/AppIcon.appiconset/Icon_*.png)
QMAKE_BUNDLE_DATA += ios_icon

OTHER_FILES += $$PWD/Info.plist $$PWD/Images.xcassets/AppIcon.appiconset/Contents.json

QMAKE_INFO_PLIST = $$PWD/Info.plist

 

 

My App.pro file:

mac {
cache()
}

#-------------------------------------------------------------------------------

CONFIG += c++14

ANDROID_MIN_SDK_VERSION = 21
ANDROID_TARGET_SDK_VERSION = 30


# additional modules are pulled in via arcgisruntime.pri
QT += qml quick

ARCGIS_RUNTIME_VERSION = 100.14.1
include($$PWD/arcgisruntime.pri)

TEMPLATE = app
TARGET = My App Name

equals(QT_MAJOR_VERSION, 5) {
lessThan(QT_MINOR_VERSION, 15) {
error("$$TARGET requires Qt 5.15.2")
}
equals(QT_MINOR_VERSION, 15) : lessThan(QT_PATCH_VERSION, 2) {
error("$$TARGET requires Qt 5.15.2")
}
}


#-------------------------------------------------------------------------------

SOURCES += \
main.cpp

RESOURCES += \
qml/qml.qrc \
Resources/Resources.qrc

OTHER_FILES += \
wizard.xml \
wizard.png

#-------------------------------------------------------------------------------

win32 {
include (Win/Win.pri)
}

macx {
include (Mac/Mac.pri)
}

ios {
include (iOS/iOS.pri)
}

android {
include (Android/Android.pri)
}

android: include(C:/Users/user/AppData/Local/Android/Sdk/tools/android_openssl/openssl.pri)


DISTFILES += \
Android/AndroidManifest.xml \
Android/build.gradle \
Android/gradle.properties \
Android/gradle/wrapper/gradle-wrapper.jar \
Android/gradle/wrapper/gradle-wrapper.properties \
Android/gradlew \
Android/gradlew.bat \
Android/res/values/libs.xml \
Android/res/values/strings.xml

0 Kudos
1 Solution

Accepted Solutions
tanerkoka
Occasional Contributor II
0 Kudos
3 Replies
Tanner_Yould
Esri Contributor

Hi @tanerkoka this doesn't seem like an issue related to the ArcGIS Runtime SDK and your question would probably be better answered on the Qt Forums.

That being said, it looks like you need a `CFBundleIconName` key in your Info.plist file and one of your iOS icons needs to be 120x120 pixels.

This Qt Forum post may help: https://forum.qt.io/topic/87983/ios-appstore-trouble-with-cfbundleiconname-and-asset-catalog-somethi...

 

Tanner Yould
Samples Product Engineer
ArcGIS Maps SDK for Qt
Esri
0 Kudos
tanerkoka
Occasional Contributor II

Hi @Tanner_Yould,

I am writing about this issue in the Qt forum and other different forums.Doesn't a Qt application written as a team using Arcgis Runtime for Qt have a standard for porting it to the apple store?  For example, which icon standards  or config do you use to transfer to apple store? I'm waiting for more details on this.

I added it to the Info.plist file as follows:
<key>CFBoundleIconName</key>
<string>AppIcon</string>

Do we need to write "AppIcon" in the red square in the Picture below?

AppIcon.png

In the Icon part, I added a 120x120 pixel file named "Icon_120x120.png" (with bold font in Info.plist file ) and "Icon_App-1024x1024@1x.png" file for iphone and called it in the "Info.plist" and "Contents.json" file as follows.

Info.plist file:

<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon_29.png</string>
<string>Icon_40.png</string>
<string>Icon_50.png</string>
<string>Icon_57.png</string>
<string>Icon_58.png</string>
<string>Icon_72.png</string>
<string>Icon_76.png</string>
<string>Icon_80.png</string>
<string>Icon_100.png</string>
<string>Icon_114.png</string>
<string>Icon_120.png</string>
<string>Icon_120x120.png</string>
<string>Icon_144.png</string>
<string>Icon_152.png</string>

</array>
</dict>
</dict>

I didn't know if the <key>CFBundle Icons</key> and <key>CFBundle Icons~ipad</key> sections and the icon names in it should be included in the Info.plist file or should I delete it? Because they suggested deleting it from the Info.plist file below in a document.
<key>CFBundleIconFile</key>
<key>CFBundleIcons</key>

Contents.json file

{
"size" : "120x120",
"idiom" : "iphone",
"filename" : "Icon_120x120.png",
"scale" : "2x"
}
The following mandatory ios-marketing icon has also been added to the Contents.json file:

{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon_App-1024x1024@1x.png",
"scale" : "1x"
}

Even though I edited the above parts, I still get the same error. Am I missing something somewhere, can you help?

Finally, shall we add or delete lines of code from the iOS.pri or MyProject.pro files? as follows:
QMAKE_ASSET_CATALOGS = $$PWD/ios/Images.xcassets
QMAKE_ASSET_CATALOGS_APP_ICON = “AppIcon”

0 Kudos
tanerkoka
Occasional Contributor II
0 Kudos