我在Mac上维护了一个使用Qt 4.8.6构建的旧应用(它使用的是phonon,所以我无法升级到Qt 5.x)。构建完成后,我得到了一个.app文件,然后在这个.app上运行macdeployqt,将Qt库部署到其中。它运行得很好。然后我需要codesign这个.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精简的带符号捆绑包(x86_64)
然后验证,得到输出:嵌入式框架在子组件中包含修改或无效的版本...
我在网上搜索了很多次,都没有找到解决方案。如何协同设计/验证这种捆绑应用?(使用Qt 4.8.6。有了Qt 5.x,一切都很好)
谢谢!
发布于 2016-01-01 15:26:46
我有一个用Qt 4.8.7构建的Mac应用程序,下面是我写给自己的完成代码签名过程的说明:
运行'macdeployqt‘将Qt框架复制到捆绑包中:
$ macdeployqt myapp.app插件-no- -verbose=2
macdeployqt不能正常工作,需要修复框架。
进入应用程序包的根目录('cd myapp.app')并运行fix_frameworks
$ 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证书和沙箱授权对.app进行签名。要从Mac Developer站点获取证书,我相信您需要以团队代理(创建帐户的人)的身份登录。在当前的OS X版本(Yosemite、El Cap等)上,执行以下操作以对框架和应用程序进行签名:
$ myapp.app --授权../platform_specific/mac/sandbox.entiments -s“开发人员ID应用程序”--deep myapp.app
spctl应显示应用程序已正确签名:
$ spctl --verbose=4 --评估--类型执行myapp.app/ myapp.app/:接受的source=Developer ID
下面是fix_frameworks.sh的内容
#!/bin/sh #在运行macdeployqt cd Contents/Frameworks/QtCore.framework mv Resources/ Versions/4 cd Versions ln -s 4 Current cd之后,从应用程序包的根目录运行此命令。ln -s Versions/ Current /QtCore QtCore ln -s Versions/Current/Resources cd ../ .. /../ cd Contents/Frameworks/QtGui.framework mv Resources/ Versions/4 cd Versions ln -s 4 Current cd ..ln -s Versions/ Current /QtGui QtGui ln -s Versions/Current/Resources cd ../ .. /../ cd Contents/Frameworks/QtNetwork.framework mv Resources/ Versions/4 cd Versions ln -s 4 Current cd ..ln -s Versions/Current/QtNetwork QtNetwork ln -s Versions/Current/Resources cd ../../../
您可能需要进行一些更改:使用系统上安装Qt框架的位置的路径,并添加处理核心/Gui/网络以外的Qt框架的步骤。
https://stackoverflow.com/questions/34543064
复制相似问题