一、前言
作者有诸多踩坑已在文中标注解决,保姆级教学,若有不准确的地方欢迎指正讨论。
二、APP打包
怎么开发项目就不多说了,直接上干货,上架APP前提:有一个已开发好的项目。下面是APP打包步骤,打包好的APP可直接在别的mac系统上使用:
1.打开Qt项目,右键项目名选择Rebuild(若你的目标是上架请先看第三节),这将在当前的工作目录生成一个APP
2.在qt的安装目录bin文件夹下,一般目录是../qt/5.14.2/clang_64/bin,右键bin文件夹新建终端窗口
3.将库文件打包到APP中,让APP具有可移植性
使用命令:
sudo ./macdeployqt ../path/to/your/appname.app
../path/to/your/appname.app 替换为APP的当前路径,也就是第一步中生成的APP路径
若是使用了qml 不用上一步,直接使用命令:
sudo ./macdeployqt ../path/to/your/appname.app
-qmldir=/Users/sw/marvin/qt/5.14.2/clang_64/qml
/Users/sw/marvin/qt/5.14.2/clang_64/qml 替换为qt下的qml文件路径,一般与bin文件是在一起的
4.检查打包好的库,右键进入APP,在Contents文件夹下,出现了Frameworks和PlugIns文件夹,qml库文件放在Resources/qml文件夹下了,使用命令:
sudo otool -L ../path/to/your/appname.app/Contents/MacOS/appname
检查库路径是否正确, ../path/to/your/appname.app/Contents/MacOS/appname 就是APP包内容中MacSO下的可执行文件的路径。
上图中,我使用了第三方库文件libusb,它已经被载入到Frameworks文件夹下,并重新配置了路径,带有@executable_path和@rpath,说明该库已经打包成功。
带有/System/library和/usr/lib 都是存放在系统文件夹下的,可以不用管。双击运行APP中Contents/MacOS/appname.app 若没有开启APP,查看终端报错信息,可能是缺少qml库或者Qt库文件,在qt安装目录找到缺少的库,复制添加进APP中对应的文件夹路径中即可。
若你的第三方库显示/usr/local/....或其它,就需要将此库的库路径重新配置,确保在包内容中的Contents/Frameworks中有你的第三方库,若没有请手动添加,使用命令:
sudo install_name_tool -change "/usr/local/lib/libusb-1.0.0.dylib" "@rpath/libusb-1.0.0.dylib" ../path/to/your/appname.app/Contents/MacOS/appname
/usr/local/lib/libusb-1.0.0.dylib将会替换为@rpath/libusb-1.0.0.dylib,确保完成以上步骤后,双击APP能运行,且能移植到别的mac上使用。
三、需准备的文件
若你只想将APP打包,使用上面步骤即可,上架流程如下:
1.Asset.xcassets和Asset.car文件制作
在使用Rebuild之前,需要在项目中添加以下文件和内容
在.pro文件中添加
macx {
QMAKE_INFO_PLIST = $$PWD/info.plist
ASSETS_FOLDER = $$PWD/Assets.xcassets
OTHER_FILES += $${ASSETS_FOLDER}
}
在项目中添加Asset.xcassets,info.plist文件,下面是文件的制作方法:
../path/to/your/appname.pro替换为项目中的.pro路径,使用命令:
sudo qmake ../path/to/your/appname.pro -spec macx-xcode
若报错 make command not found,添加环境变量,../path/to/qt/bin替换为你的bin路径
echo ‘export PATH=../path/to/qt/bin:$path’>> ~/.bash_profile
source ~/.bash_profile
再次尝试使用第一条命令,运行成功则会在当前目录生成.xcodeproj文件,使用Xcode打开这个文件,在Xcode中邮件项目名,选择new File
选择Asset Catalog,创建它
选择刚刚创建的资源目录,在空白处右键选择新建App Icon
图标规则,规范,准备如下图的png,文件名称要和我下面的名称对应,macOS APP都需要带圆角,可以在网上搜图片格式修改在线工具,可以先准备一张1024x1024大小的图
例icon_16.png 大小是16x16 的72像素的图片,icon_16@2x.png 是大小32x32 的