首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mac,Qt 4.8.6协同设计问题

Mac,Qt 4.8.6协同设计问题
EN

Stack Overflow用户
提问于 2015-12-31 15:51:17
回答 1查看 350关注 0票数 1

我在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,一切都很好)

谢谢!

EN

回答 1

Stack Overflow用户

发布于 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框架的步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34543064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档