Hi all,
We have tried to upload our game to App Store Connect, and been greeted by the following e-mail:
Dear Developer, We identified one or more issues with a recent delivery for your app, "[REDACTED]" 0.1082057 (0.1082057). Please correct the following issues, then upload again. ITMS-90135: The executable could not be re-signed for submission to the App Store. The app may have been built or signed with non-compliant or pre-release tools. Best regards, The App Store Team |
And we don't know what has gone wrong with this.
Our process is as follows - assume the app is called "AppName":
Step 1: Create our AppName.app using xcode 10.3 command line tools, and Unreal Engine's build system.
Step 2: a script which does this to produce a PKG:
mv AppName.app temp.app
ditto --rsrc arch x86_64 temp.app AppName.app
echo "Updating Info.plist: adding LSApplicationCategoryType"
/usr/libexec/PlistBuddy -c "Add :LSApplicationCategoryType string public.app-category.games" AppName.app/Contents/Info.plist
echo "Updating Info.plist: setting version numbers"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $2" AppName.app/Contents/Info.plist
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $2" AppName.app/Contents/Info.plist
echo "Updating the bundle identifier"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier [REDACTED]" AppName.app/Contents/Info.plist
echo "Signing the code"
sign_file() {
local LOCATION=`dirname $0`
echo " Signing $*"
codesign -f -v -s "3rd Party Mac Developer Application: [REDACTED]" --entitlements [ENTITLEMENTS_PLIST] $*
}
for LIB in $(find AppName.app/Contents -name "*.dylib" -type f)
do
sign_file $LIB
done
sign_file AppName.app
echo "Building the package"
productbuild --sign "3rd Party Mac Developer Installer: [REDACTED]" --component AppName.app /Applications AppName.pkg
mv temp.app AppName.app.bak
Step 3 - Upload the build this way:
xcrun altool --validate-app -f AppName.pkg -u [REDACTED] -p @keychain:[REDACTED]
xcrun altool --upload-app -f AppName.pkg -u [REDACTED] -p @keychain:[REDACTED]
Our plist in the package looks like this:
<?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>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>[REDACTED]</string>
<key>CFBundleIconFile</key>
<string>[REDACTED]</string>
<key>CFBundleIdentifier</key>
<string>[REDACTED]</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>[REDACTED]</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.1082057</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.1082057</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.games</string>
<key>LSMinimumSystemVersion</key>
<string>10.13.6</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSHighResolutionCapable</key>
<false/>
<key>NSHighResolutionMagnifyAllowed</key>
<false/>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
And our entitlements plist looks like this:
<?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>com.apple.security.app-sandbox</key> <true/>
</dict>
</plist>