Mac下将QT程序打包成能发布到Mac App store的pkg安装包

本人刚接触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



icns图标制作:

1.   将 文件夹名为XXXX.iconset的文件夹(包含若干个png图片) 打包成XXXX.icns文件:
To convert a set of icons to an icns file:
iconutil -c icns <iconset filename>
2.   将XXX.icns文件 转成 包含若干个png图片的文件夹:
To convert an icns file to a set of icons:
iconutil -c iconset <icns filename>

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





你可能感兴趣的:(Mac下将QT程序打包成能发布到Mac App store的pkg安装包)