對於背景審查,我使用Qt 5.3.1與OSX 10.9的Xcode 5.1.1。提交的Qt 5.3的應用程序在Mac App Store中
經過一番掙扎後,我終於能得到我的應用程序的PKG文件通過Application Loader上傳和出現在我的應用程序在iTunes Connect我的「預發行」構建列表。但是,一旦我構建添加到應用程序,然後點擊「提交審覈」我得到的錯誤以下轉換:
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
The nested bundle must contain an executable that matches the CFBundleExecutable key in the Info.plist of the nested bundle .
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
ITC.apps.assetvalidation.DESKTOP_MISSING_NESTED_BUNDLE_IDENTIFIER.error.message
The Info.plist of the nested bundle must contain a valid CFBundleExecutable key.
我申請在該答覆中提到的注意事項:Sign a Framework for OSX 10.9
基本上,我通過Xcode構建我的應用程序(在發佈模式下),然後使用我編寫的一個小腳本來幫助自動完成應用商店的準備工作。腳本的要點是在這裏:
import os
import shutil
import subprocess
import sys
bundleFolder = '/path/to/the/bundle/app'
qtFolder = '/path/to/qt/et/al'
entitlements = '/path/to/entitlesments/file'
print 'Bundle folder: ', bundleFolder
print 'Qt Folder: ', qtFolder
print 'Executing macdeploy'
subprocess.call([qtFolder + '/bin/macdeployqt', bundleFolder + '/Program.app'])
frameworks = ['QtConcurrent', 'QtCore', 'QtGui', 'QtMultimedia', 'QtMultimediaWidgets', 'QtNetwork',
'QtOpenGL', 'QtPositioning', 'QtPrintSupport', 'QtQml', 'QtQuick', 'QtSensors', 'QtSql',
'QtWebKit', 'QtWebKitWidgets', 'QtWidgets', 'QtXml', 'QtXmlPatterns']
for fwork in frameworks :
print ('Copying Info.plist to frameworks: ' + fwork)
fworkFolder = qtFolder + '/lib/' + fwork + '.framework/Contents/Info.plist'
destFolder = bundleFolder + '/Program.app/Contents/Frameworks/' + fwork + '.framework/Resources/'
if (os.path.exists(destFolder)) :
print 'Copying ' + fworkFolder + ' to ' + destFolder
shutil.copy(fworkFolder,destFolder)
print ('Deleting unnecessary PlugIns')
rmFiles = ['accessible','audio', 'mediaservice', 'printsupport']
for rmFile in rmFiles :
fullFile = bundleFolder + r'/Program.app/Contents/PlugIns/' + rmFile
if (os.path.exists(fullFile)) :
print ('Deleting directory: ' + fullFile)
shutil.rmtree(fullFile)
print ('Signing Qt Executables')
for fwork in frameworks :
subprocess.call([r'/usr/bin/codesign',
r'--deep',
r'--force',
r'--verify',
r'--verbose',
r'--sign',
r'3rd Party Mac Developer Application: [valid info]',
r'--entitlements',
entitlements,
bundleFolder + '/Program.app/Contents/Frameworks/' + fwork + '.framework/Versions/5/' + fwork
])
print ('Signing Bundle')
subprocess.call([r'/usr/bin/codesign',
r'--deep',
r'--force',
r'--verify',
r'--verbose',
r'--sign',
r'3rd Party Mac Developer Application: [valid info]',
r'--entitlements',
entitlements,
bundleFolder + '/Program.app',
])
print ("Building PKG")
subprocess.call([r'/usr/bin/productbuild',
r'--component',
bundleFolder + '/Program.app',
r'/Applications',
r'Program-Installer.pkg'
])
print ("Building Signed PKG")
subprocess.call([r'/usr/bin/productsign',
r'--sign',
r'3rd Party Mac Developer Installer: [valid info]',
r'Program-Installer.pkg',
r'Program-Installer-Signed.pkg'
])
我猜問題在於每一個人的Qt * .framework 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>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>5.3</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>
<string>QtConcurrent</string>
<key>NOTE</key>
<string>Please, do NOT change this file -- It was generated by Qt/QMake.</string>
</dict>
</plist>
所以,我不明白爲什麼Mac App Store抱怨。有人有想法嗎?
謝謝!
同樣在這裏。我認爲這可能是一個新的要求,即在嵌套包的plist文件(即YouApp.app而不是框架名稱)中擁有主應用程序的可執行名稱,但由於iTunesConnect不允許我更新構建。我刪除舊版本,上傳一個新版本,但是我仍然只有一個版本在服務器上(分開上傳)。如果您知道如何重新上傳二進制文件 - 我可以嘗試一下我的想法並回報。 – Gobra 2014-09-06 00:28:30
我通過遞增內部版本號完成了上傳新的二進制文件。 – Addy 2014-09-06 01:12:00
我甚至不能改變版本號後,看到在iTunes新建,但每次上傳我收到一個郵件具有相同的問題列表。所以,我想,我的想法不起作用。 – Gobra 2014-09-06 10:35:22