本人刚接触QT不久,用QTCreator开发的程序要上传到Mac App store,那首先就要打包,想试着用xcode能不能打包,试了很长时间,总是没能试出,用xcode是能运行(请看后文:用xcode打开QT程序),但就是搞不清楚xcode是如何打包的,那些库如何拷进包里?LaunchScreen文件如何设置?最后找了很多参考文档,用脚本打包了。
本文主要内容目录:
打包步骤
备忘(打包脚本)
用xcode打开QT程序
查看iMac 的UUID
icns图标制作
打包步骤:
第一步:Release app generation 生成app包
macdeployqt Joop.app (前提是QTCreator release运行有了Joop.app, 注:我的程序叫Joop)
第二步: Check if everything when ok 检查
dsymutil Joop.app/Contents/MacOS/Joop -o Joopapp.dSYM (这步应该没什么用)
第三步: Sign Frameworks (签名第三方lib库)
codesign --entitlements ../Joop.entitlements -f -s "3rd Party Mac Developer Application: XXX" Joop.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore (将所有的lib库,包括号qt的库者签名)
1. Joop.entitlements:是从xcode里面弄出来的,主要是打开sandbox,沙 盒化.
2. 3rd Party Mac Developer Application: XXX 是证书的名字. 这个证书是你电脑上有的,否会提示找不到,这个名字一是不要用敲,容易出错,二是,双引号一定要是英文,不然也出错。证书的名字获取方法:如果证书安装好后钥匙串程序中能看到以3rd Party Mac Developer Application开头的,右键->显示简介 然后将名字复帛制下来,如果有括号,括号也要一起,如:3rd Party Mac Developer Installer:XXXXX Technologies Inc. (BH54333ADL5T)
3. 关于证书的理解:http://blog.csdn.net/iflychenyang/article/details/45894471
第四步:Sign bundle app (签名主程序app)
codesign --deep --entitlements ../Joop.entitlements -f -s "3rd Party Mac Developer Application: XXX" Joop.app
第五步:Generate Pkg (生成安装包.pkg)
productbuild --product ../info.plist --sign "3rd Party Mac Developer Installer: XXXX" --component Joopic.app /Applications/ Joop.pkg
注意这一步中证书与第三步,第四卡中的证书不一样,证书名字获取方法同第三步
第六步:Check Pkg (检查)
sudo installer -store -pkg Joopic.pkg -target /
也可以双击pkg包安装检查,但是没有用命令来得好(有信息输出可看),我开始就是双击安装一切都没问题,就是安装后,就是Applications中什么也没有,用Launchpad中看也没有,还以为是打包过程有问题,苦了很久。最后用sudo installer -store -pkg Joopic.pkg -target / 一看,输出信息显示:
installer: Bundle com.xxxx.xxxx will not be installed, since version at /XXX/JooPForXcode2/Debug/Joop.app is newer
原来我用xcode运行过程序,在Debug目录下有版本更新的Joop.app ,于是将info.plist中的版本号改大,这样运行后Launchpad中还是没有,只是将Debug下的更新了,最后我将Debug下的删除,这样再次安装后,Launchpad中就有了。
第七步:upload Pkg (上传)
最后如果没问题就可以上传了,开始以为只能上传xcode打的包,并只能在xcode中上传。后来知道原来有个Application Loader的程序集成到xcode上用来上传,打开Xcode -> Open developer Tool -> Application Loader 上传. 至此,我还没有上传成功,等后续更新。
备忘(打包脚本):
echo "start..."
#0. start ...
rm -rf ReleaseTemp
mkdir ReleaseTemp
cd ReleaseTemp
#1. Release app generation
cp -r ../../../build-JooP-Desktop_Qt_5_8_0_clang_64bit-Release/* .
macdeployqt Joop.app
cp -r ../info.plist Joop.app/Contents/info.plist
#2. Check if everything when ok
dsymutil Joop.app/Contents/MacOS/Joop -o Joop.app.dSYM
#3. Sign Frameworks
codesign --entitlements ../Joop.entitlements -f -s "3rd Party Mac Developer Application: XXXX" Joop.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore
codesign --entitlements ../Joop.entitlements -f -s "3rd Party Mac Developer Application: XXXX" Joop.app/Contents/Frameworks/QtGui.framework/Versions/5/QtGui
.
.
.
#4. Sign bundle app
codesign --deep --entitlements ../Joop.entitlements -f -s "3rd Party Mac Developer Application: XXXX" Joop.app
#5. Generate Pkg
productbuild --product ../info.plist --sign "3rd Party Mac Developer Installer: XXXX" --component Joop.app /Applications/ Joop.pkg
#productbuild --component Joop.app /Applications Joop.pkg
mv Joop.pkg ../
cd ..
echo "finish."
#6. Check Pkg
#sudo installer -store -pkg Joop.pkg -target /
用xcode打开QT程序
在命令行中QT项目根目录下执行:qmake project.pro -spec macx-xcode
生成对应的后缀名为.xcodeproj的文件,然后使用XCode就可以打开了
参考:http://jingyan.baidu.com/article/22fe7ced3ebb0d3003617f62.html
http://blog.csdn.net/u014597198/article/details/52680413
查看iMac 的UUID
第一种方法:在终端运行:ioreg -d2 -c IOPlatformExpertDevice
第二种方法:xcode中windows->devices
3. 例:iconutil -c icns Joopic.iconset
注意:.iconset文件夹下的图片一定是这样的规则,icon不能改成其他的名字
icon_128x128.png icon_128x128@2x.png icon_16x16.png icon_16x16@2x.png icon_256x256.png icon_256x256@2x.png icon_32x32.png icon_32x32@2x.png icon_512x512.png icon_512x512@2x.png
参考资料:
1.打包步骤与脚本主要来源:https://stackoverflow.com/questions/32379982/api-calls-dont-run-when-i-codesign-my-mac-os-x-app
2.https://stackoverflow.com/questions/20909341/what-is-the-fastest-easiest-way-step-by-step-from-the-beginning-to-code-si/20918932#20918932
3.签名:http://blog.csdn.net/cocoasprite/article/details/9624815 http://blog.sina.com.cn/s/blog_b638dc890102vpdq.html
4.对苹果证书的理解:http://blog.csdn.net/iflychenyang/article/details/45894471
5.备用:https://stackoverflow.com/questions/11487596/making-os-x-installer-packages-like-a-pro-xcode-developer-id-ready-pkg
6. 用xcode打包上传的流程,写得精练,但不够细,所以做不出来,还是留着链家做参考: http://blog.csdn.net/qq_17485343/article/details/50471197