问题描述:基于 QT 4.8.7_2 的应用程序无法在 Appstore 中提交未密封的内容错误

背景:问题是框架嵌入在应用程序中。应用程序是用 Qt 4.8.7_2 编写的,apple 请求框架的新结构,其中有一个名为 A inside Versions 文件夹的文件夹,该文件夹不存在,因此失败。请注意,有一个名为 4 的文件夹,其中有框架,如果我们将此文件夹名称从 4 更改为 A,那么应用程序将崩溃。我将框架放在一个特殊文件夹中,并从 xcode 请求嵌入此文件夹中的框架。从终端,我重新构建了框架目录,并在文件夹内创建了内部符号链接(Versions/A - > 4 和 Versions/Current-> 4)。在另一个作品中,创建了 2 个符号链接,一个名为 A,另一个名为 Current,两者都指向 A.现在 Xcode 可以验证和协同签名,上传到 Appstore 的输出文件因 Invalid build 而失败。 Appstore 给我发了一封电子邮件,说明失败的原因。我会检查,工作并让你知道。

从 appstore 收到错误:

签名无效 - 路径 TypingTutor.app 上的主应用程序包 TypingTutor 具有以下签名 error(s):--prepared:/Volumes/data01/app_data/dstr/mz_3951107737348925641dir/mz_287010058513639019dir/com.PCfone.ArabicTypingTutor.pkg/Payload/TypingTutor.app/Contents/Frameworks/libcrypto.1.0.0.dylib --validated:/Volumes/data01/app_data/dstr/mz_3951107737348925641dir/mz_287010058513639019dir/com.PCfone.ArabicTypingTutor.pkg/Payload/TypingTutor.app/Contents/Frameworks/libcrypto.1.0.0.dylib --prepared:/Volumes/data01/app_data/dstr/mz_3951107737348925641dir/mz_287010058513639019dir/com.PCfone.ArabicTypingTutor.pkg/Payload/TypingTutor.app/Contents/Frameworks/libssl.1.0.0.dylib --validated:/Volumes/data01/app_data/dstr/mz_3951107737348925641dir/mz_287010058513639019dir/com.PCfone.ArabicTypingTutor.pkg/Payload/TypingTutor.app/Contents/Frameworks/libssl.1.0.0.dylib --prepared:/Volumes/data01/app_data/dstr/mz_3951107737348925641dir/mz_287010058513639019dir/com.PCfone.ArabicTypingTutor.pkg/Payload/TypingTutor.app/Contents/Frameworks/QtCore.framework/Versions/Current/。 /Volumes/data01/app_data/dstr/mz_3951107737348925641dir/mz_287010058513639019dir/com.PCfone.ArabicTypingTutor.pkg/Payload/TypingTutor.app:嵌入式框架的根目录中存在未密封的内容在子组件中:/Volumes/data01/app_data/dstr/mz_3951107737348925641dir/mz_287010058513639019dir/com.PCfone.ArabicTypingTutor.pkg/Payload/TypingTutor.app/Contents/Frameworks/QtCore.framework。有关详细信息,请参阅http://developer.apple.com/library/mac/#documentation/Security/Conceptual/CodeSigningGuide/AboutCS/AboutCS.html处的代码签名和应用程序沙盒指南以及https://developer.apple.com/library/mac/technotes/tn2206/_index.html处的技术说明 2206。

更新 1:我下载了 Qt5.5 并使用了版本 5.5.1 中的 macdeployqt。它以重组的方式创建了框架。但是,它缺少版本中的 A 文件夹。我创建了一个指向文件夹 4 的符号链接。我有用于重新编译和打包的 xcode 项目。 Xcode 尝试签署 A 文件夹。 codesign --force --sign 016A9E58DED20AC63F1157926166C4082C925F47 --preserve-metadata=identifier,权利--timestamp=none /MyApp.app/Contents/Frameworks/QtNetwork.framework/Versions/A

输出:

捆绑包格式无法识别,无效或不适用命令/usr/bin/codesign 失败,退出代码为 1。

当我使用 codesign 对文件夹进行协同设置--sign'第三方 Mac 开发者应用程序:XXXX XXXX(R3JGXHN3B3)'--keychain~/Library/Keychains/login.keychain ./Versions/A 它有效并且 xcode 不会产生相同的错误但是当我提交时,AppStore 会在 root 的无符号框架处抱怨。

问题:为什么这不起作用?怎么调试呢? codesign --force --sign 016A9E58DED20AC63F1157926166C4082C925F47 --preserve-metadata=identifier,权利--timestamp=none /MyApp.app/Contents/Frameworks/QtNetwork.framework/Versions/A