Последние 4 дня я пытался опубликовать свое приложение в магазине Apple (чего я никогда раньше не делал).В нем я использую qt 5.12.1 с qtwebengine.Но я действительно застрял с песочницей, потому что после песочницы приложение даже не запустилось.Сначала я следовал этому https://mediaarea.net/blog/2018/02/14/QtWebEngine-MacAppStore, не перекомпилируя и не меняя веб-движок, но потом делал то же самое (хотя и безуспешно, потому что они использовали qt 5.9).Я попробовал также предложения из этой темы https://forum.qt.io/topic/102212/qtwebengine-signing-issues/4, но безуспешно.Поэтому я подумал, что вы, ребята, могли бы дать мне несколько советов, как мне это сделать.Вот мой скрипт для подписания пакета.
echo SIGN PACKAGE
# special case for QtWebEngineCore
find dist/MyApp.app -name Info.plist -exec plutil -replace CFBundleIdentifier -string "com.MyApp.desktop" {} \;
find dist/MyApp.app -name _CodeSignature -exec rm -fr {} \;
find dist/MyApp.app -name "*.dSYM" -exec rm -fr {} \;
# 1*
for f in $(find dist/MyApp.app/Contents/Frameworks -name '*.framework' -type d)
do
codesign --force --verbose -s "3rd Party Mac Developer Application: MyApp (*)" $f
done
for f in $(find dist/MyApp.app/Contents -name '*.dylib' -type f)
do
codesign --force --verbose -s "3rd Party Mac Developer Application: MyApp (*)" $f
done
codesign --entitlements app/MyApp.entitlements -s "3rd Party Mac Developer Application: MyApp (*)" dist/MyApp.app/Contents/MacOS/MyAppUpdater
codesign --entitlements app/MyApp.entitlements -s "3rd Party Mac Developer Application: MyApp (*)" dist/MyApp.app/Contents/MacOS/crashpad_handler
# 2*
codesign --force --verify --verbose -s "3rd Party Mac Developer Application: MyApp (*)" --entitlements app/MyApp.entitlements dist/MyApp.app
codesign --force --verify --verbose --sign "3rd Party Mac Developer Application: MyApp (*)" --identifier "com.MyApp.desktop" --entitlements app/webengine.entitlements dist/MyApp.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app
# 3*
codesign --entitlements app/MyApp.entitlements -s "3rd Party Mac Developer Application: MyApp (*)" dist/MyApp.app/Contents/MacOS/MyApp
Это своего рода смесь всех предложений тех сообщений.В конце концов мне удалось избавиться от всех ошибок Apple, кроме этой.
ITMS-90296: App sandbox not enabled - The following executables must include the "com.apple.security.app-sandbox" entitlement with a Boolean value of true in the entitlements property list: [( "com.MyApp.desktop.pkg/Payload/MyApp.app/Contents/MacOS/MyApp" )] Refer to App Sandbox page at https://developer.apple.com/devcenter/mac/app-sandbox/ for more information on sandboxing your app.
Проблема в том, что если я переместу часть, где я подписываю webengine, в (1 *) я получу свое приложение через appleпроверяет, но это потерпит крах.Но если я оставлю это там, где сейчас, я получу ошибку выше.Сначала у меня было 3 * выше 2 *, и я попробовал комбинацию перемещения по сигнатуре webengine.
Для получения более подробной информации я приложу свои MyApp.plist, MyApp.entitlements и webengine.entitlements ниже.Я запускаю macos mojave 10.14.3 на VirtualBox, qt 5.12.1
webengine.entitlements
<?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.inherit</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict>
</plist>
MyApp.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>MyApp</string>
<key>CFBundleExecutable</key>
<string>MyApp</string>
<key>CFBundleIdentifier</key>
<string>com.MyApp.desktop</string>
<key>CFBundleSpokenName</key>
<string>MyApp</string>
<key>CFBundleGetInfoString</key>
<string>blalba</string>
<key>CFBundleIconFile</key>
<string>MyApp.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>LSMinimumSystemVersion</key>
<string>10.11</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone is required for voice messages and calls</string>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<false/>
<key>CFBundleVersion</key>
<string>0.5.1225</string>
<key>CFBundleShortVersionString</key>
<string>0.5.1225</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.social-networking</string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>
MyApp.entitlements
<?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.inherit</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
У меня закончились идеи и информация о том, как решить эту проблему.Еще одна проблема заключается в том, что я никогда раньше не публиковал приложения в Apple Store, и обычно я тоже не разрабатываю под Macos.Так что все для меня ново (люблю это).И если я этого не сделаю, мой руководитель команды повесят меня, если я сам этого не сделаю первым.Так что любая помощь приветствуется.