首页 文章

Mac,Qt 4.8.6编码问题

提问于
浏览
1

我'm maintaining an old app on Mac that built with Qt 4.8.6 (It was using phonon so I can' t升级到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/
其他库/框架也是如此 . (复制...
/Contents/Info.plist到myApp.app/Contents/Frameworks/*.framework/Resources/
然后 codesign ,获得了输出:带有Mach-O thin的签名包(x86_64)
然后验证,得到输出:嵌入式框架包含修改或无效版本在子组件中...

我在互联网上搜索了很多次,但找不到解决方案 . 如何协调/验证这种捆绑应用程序? (使用Qt 4.8.6 . 使用Qt 5.x,一切都还可以)
谢谢!

1 回答

  • 0

    我有一个用Qt 4.8.7构建的Mac应用程序,这是我写给自己的指令,以完成代码签名过程:

    运行'macdeployqt'将Qt框架复制到包中:$ macdeployqt myapp.app -verbose = 2 -no-plugins
    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,无论如何)上,执行以下操作来签署框架和应用程序:$ 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/:接受了
    source =开发者ID

    这是 fix_frameworks.sh 的内容

    #!/ bin / sh

    #运行macdeployqt后,从应用程序包的根目录运行此命令

    cd Contents / Frameworks / QtCore.framework
    资源/版本/ 4
    cd版本
    ln -s 4当前
    cd ..
    ln -s版本/当前/ QtCore QtCore
    ln -s版本/当前/资源资源
    cd ../../../

    cd目录/框架/ QtGui.framework
    资源/版本/ 4
    cd版本
    ln -s 4当前
    cd ..
    ln -s版本/当前/ QtGui QtGui
    ln -s版本/当前/资源资源
    cd ../../../

    cd Contents / Frameworks / QtNetwork.framework
    资源/版本/ 4
    cd版本
    ln -s 4当前
    cd ..
    ln -s版本/当前/ QtNetwork QtNetwork
    ln -s版本/当前/资源资源
    cd ../../../

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

相关问题