问题
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
|
小Tips:签名之前需要解锁keychain
1
| security unlock-keychain -p "******" "$HOME/Library/Keychains/login.keychain"
|
完整打包脚本
macos packaging python script