MAC版打包步骤
假设Skydimo.app包编译路径为
/Users/mac/QtProjects/SkyDimo/build-Skydimo-Desktop_Qt_5_15_2_clang_64bit-MinSizeRel/build
使用dylibbundler修复程序中除QT以外的第三方库, 如果没有dylibbundler, 使用brew安装, 注意使用x86架构的brew而不是arm架构, 如何在arm架构机器上安装x86架构的brew请访问互联网。修复过程中可能需要是输入libLibSkydimo.dylib所在目录。
dylibbundler -od -b -ns -x ./Skydimo.app/Contents/MacOS/Skydimo -d ./Skydimo.app/Contents/libs
修复之后可以使用命令检查依赖库路径是否正确
mac@192 build % otool -L ./test.app/Contents/MacOS/test
mac@192 build % otool -L ./test.app/Contents/libs/libLibtest.dylib
使用QT提供的macdeployqt安装QT框架至程序包, 注意要用程序编译时所用的qt附带的macdeployqt工具, 可能需要cd进入qt安装目录, 然后显式指定./macdeployqt而不是macdeployqt
cd /Users/mac/Qt/5.15.2/clang_64/bin
mac@192 bin % ./macdeployqt /Users/mac/QtProjects/test/build-test-Desktop_Qt_5_15_2_clang_64bit-MinSizeRel/build/test.app
检查二进制文件RPATH表
otool -l ./test.app/Contents/MacOS/test | grep RPATH -A2
添加QT框架目录到二进制文件RPATH表
install_name_tool -add_rpath @executable_path/../Frameworks ./test.app/Contents/MacOS/teste
MAC版签名与公正
使用APPLE开发者账户登录并进入网址下载证书, 然后安装到本地计算机上
https://developer.apple.com/account/resources/certificates/download/
生成公证配置,每台电脑仅需要运行一次
xcrun notarytool store-credentials “testApp” --apple-id “tonyepaper@163.com” --team-id “M73XRGZ894” --password “wvaj-cmmn-dgol-akdk”
为应用程序进行签名(不是程序包)
codesign -f -o runtime --timestamp -s "Developer ID Application: Shenzhen Guangyuzhou Technology Co., Ltd. (M73XRGZ894)" -v ./test.app/Contents/MacOS/test
为依赖库进行签名
codesign -f --timestamp -s "Developer ID Application: Shenzhen Guangyuzhou Technology Co., Ltd. (M73XRGZ894)" -v ./test.app/Contents/libs/*.dylib
使用磁盘工具将app打包为dmg
磁盘工具》 基于文件夹建立DMG印象
将dmg包上传至APPLE进行公证, 这个需要一点时间
xcrun notarytool submit ./test.dmg --keychain-profile "testApp" --wait
如果出现错误, 使用命令查询错误原因并修复, 其中id部分为上一个命令提供
xcrun notarytool log "5c6915b2-1eb3-4a33-b03d-0722c6b8b747" --keychain-profile "testApp"