Mac下签名导致QWebEngineView加载失败问题以及签名的简单说明

问题

Mac下QtWebEngineProcess直接签完名,会导致应用调起QWebEngineView失败,网页不加载。

解决方法

本质是在一个App下有多个子程序,会发生签名崩溃,需要每个子程序都签名;

签名步骤

1. 应用签名,.app签名

1
codesign --options=runtime --timestamp --deep --force --verify --verbose --sign "Developer ID Application: ******(******)" MyApp.app

2. QtWebEngineProcess签名

为 QtWebEngineProcess 创建一个授权文件entitlements.plist
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict>
</plist>
格式化entitlements.plist,防止无法解析
1
plutil -convert xml1 entitlements.plist
对 QtWebEngineProcess 进行签名
1
codesign --options=runtime --timestamp --force --verify --verbose --sign "Developer ID Application: ******(******)" --entitlements "entitlements.plist" MyApp.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/MacOS/QtWebEngineProcess

3. 可执行程序签名

1
codesign --options=runtime --timestamp --force --verify --verbose --sign "Developer ID Application: ******(******)" MyApp.app/Contents/MacOS/MyApp

原帖:https://forum.qt.io/topic/102212/qtwebengine-signing-issues

小Tips:签名之前需要解锁keychain

1
security unlock-keychain -p "******" "$HOME/Library/Keychains/login.keychain"

完整打包脚本

macos packaging python script