欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-04 11:42:06
...

本人刚接触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
[email protected].png
icon_16x16.png
[email protected].png
icon_256x256.png
[email protected].png
icon_32x32.png
[email protected].png
icon_512x512.png
[email protected].png


参考资料:

1.打包步骤与脚本主要来源:https://*.com/questions/32379982/api-calls-dont-run-when-i-codesign-my-mac-os-x-app

2.https://*.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://*.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