Macos Mac,Qt 4.8.6协同设计问题

Macos Mac,Qt 4.8.6协同设计问题,macos,qt4,code-signing,Macos,Qt4,Code Signing,我在Mac上维护一个用Qt4.8.6构建的旧应用程序(它使用的是phonon,所以我无法升级到Qt5.x)。构建之后,我得到了一个.app文件,然后在这个.app上运行macdeployqt,将Qt库部署到这个。它运行良好。然后我需要codesignthis.app。据我所知,与应用程序包的目录结构相关的一些问题已经改变,并且Qt4 macdeployqt命令不符合新的布局。我试图修复: cp/Library/Frameworks/phonon.faramework/Contents/Info.

我在Mac上维护一个用Qt4.8.6构建的旧应用程序(它使用的是phonon,所以我无法升级到Qt5.x)。构建之后,我得到了一个.app文件,然后在这个.app上运行
macdeployqt
,将Qt库部署到这个。它运行良好。然后我需要
codesign
this.app。据我所知,与应用程序包的目录结构相关的一些问题已经改变,并且Qt4 macdeployqt命令不符合新的布局。我试图修复:
cp/Library/Frameworks/phonon.faramework/Contents/Info.plist myApp.app/Contents/Frameworks/phonon.framework/Resources/

其他库/框架也是如此。(将…{Qt}/Contents/Info.plist复制到myApp.app/Contents/Frameworks/*.framework/Resources/
然后
codesign
,得到输出:带有Mach-O thin(x86_64)的签名包
然后验证,得到输出:嵌入式框架包含修改的或无效的版本 在子组件中

我在互联网上搜索了很多次,但没有找到解决方案。如何对这种捆绑应用程序进行代码设计/验证?(使用Qt 4.8.6。使用Qt 5.x,一切正常)

谢谢!

我有一个用Qt 4.8.7构建的Mac应用程序,下面是我写给自己的关于完成代码签名过程的说明:

运行“macdeployqt”将Qt框架复制到捆绑包中:

$ macdeployqt myapp.app -verbose=2 -no-plugins
macdeployqt不能正常工作,框架需要修复

进入应用程序包的根目录('cd myapp.app')并运行fix\u框架

$ cd myapp.app
$ ../../platform_specific/mac/fix_frameworks.sh
然后,您需要手动将Info.plist复制到每个框架中:

$ cp /usr/local/Trolltech/Qt-4.8.5/lib/QtCore.framework/Contents/Info.plist "myapp.app/Contents/Frameworks/QtCore.framework/Resources/"
$ cp /usr/local/Trolltech/Qt-4.8.5/lib/QtGui.framework/Contents/Info.plist "myapp.app/Contents/Frameworks/QtGui.framework/Resources/"
$ cp /usr/local/Trolltech/Qt-4.8.5/lib/QtNetwork.framework/Contents/Info.plist "myapp.app/Contents/Frameworks/QtNetwork.framework/Resources/"
接下来,您需要使用开发者ID证书和 沙盒授权。从Mac开发者网站获取证书,I 相信您需要以团队代理(创建 在当前的OS X版本上(约塞米蒂、El Cap等), 执行以下操作以签署框架和应用程序:

$ codesign --entitlements ../platform_specific/mac/sandbox.entitlements -s "Developer ID Application" --deep myapp.app
spctl应显示应用程序已正确签名:

$ spctl --verbose=4 --assess --type execute myapp.app/
myapp.app/: accepted
source=Developer ID
下面是
fix\u frameworks.sh


您可能需要做一些更改:使用系统上安装Qt框架的位置的路径,并添加处理除Core/Gui/Network之外的Qt框架的步骤。

我有一个用Qt 4.8.7构建的Mac应用程序,以下是我为完成代码签名过程编写的说明:

运行“macdeployqt”将Qt框架复制到捆绑包中:

$ macdeployqt myapp.app -verbose=2 -no-plugins
macdeployqt不能正常工作,框架需要修复

进入应用程序包的根目录('cd myapp.app')并运行fix\u框架

$ cd myapp.app
$ ../../platform_specific/mac/fix_frameworks.sh
然后,您需要手动将Info.plist复制到每个框架中:

$ cp /usr/local/Trolltech/Qt-4.8.5/lib/QtCore.framework/Contents/Info.plist "myapp.app/Contents/Frameworks/QtCore.framework/Resources/"
$ cp /usr/local/Trolltech/Qt-4.8.5/lib/QtGui.framework/Contents/Info.plist "myapp.app/Contents/Frameworks/QtGui.framework/Resources/"
$ cp /usr/local/Trolltech/Qt-4.8.5/lib/QtNetwork.framework/Contents/Info.plist "myapp.app/Contents/Frameworks/QtNetwork.framework/Resources/"
接下来,您需要使用开发者ID证书和 沙盒授权。从Mac开发者网站获取证书,I 相信您需要以团队代理(创建 在当前的OS X版本上(约塞米蒂、El Cap等), 执行以下操作以签署框架和应用程序:

$ codesign --entitlements ../platform_specific/mac/sandbox.entitlements -s "Developer ID Application" --deep myapp.app
spctl应显示应用程序已正确签名:

$ spctl --verbose=4 --assess --type execute myapp.app/
myapp.app/: accepted
source=Developer ID
下面是
fix\u frameworks.sh


您可能需要进行一些更改:使用系统上安装Qt框架的位置的路径,并添加处理除Core/Gui/Network以外的Qt框架的步骤。

您不能使用macdeployqt,而是手动执行相同的操作,以便文件到达正确的位置。在Windows上,只需复制正确的文件,不确定你是否需要在Mac上使用其他工具或其他东西,但它仍然是可行的,我确定这不需要魔法。这是重复的,或者至少是有用的吗?你可以不使用macdeployqt,而是手动执行相同的操作,以便将文件放到正确的位置。在Windows上,它只是复制正确的文件,不确定在Mac上是否需要o其他工具或其他东西,但它应该仍然是可行的,我肯定没有魔法。这是重复的,或者至少有用吗?你在代码设计后验证了吗?我像你一样进行了代码设计,没有错误输出,但在验证时,错误输出。是的,最后一步是验证应用程序(比如
codesign
does),并且我的应用程序已正确签名您在代码签名后验证了吗?我像您一样进行了代码签名,没有错误输出,但在验证时,错误输出。是的,最后的
spctl
步骤验证了应用程序(如
codesign
does),并且我的应用程序已正确签名