QT打包Macosx应用发布App Store简易流程

基于QT Creator开发的 MacOS APP 上架 App Store 作者有诸多踩坑已在文中标注解决,保姆级教学,若有不准确的地方欢迎指正讨论。 阅读详情

1、QC里编译工程,生成Release版的的app文件;

2、运行macdeployqt把需要的文件打包进app文件中;

% ~/Qt/5.15.0/clang_64/bin/macdeployqt {编译的app文件所在路径}/Release/xxxx.app

3、使用codesign对app进行签名,如果要发App Store的话使用"Mac App Distribution"证书,如果不发的话使用”Developer ID Installer“证书,证书配置在苹果开发者账号苹果证书中创建。

下载证书并安装,结果如下:

3、然后使用codesign对app签名:

% codesign --entitlements {entitlements文件所在目录}/xxxx.entitlements -f -s "3rd Party Mac Developer Application: xxxxxx Co.,Ltd (VQ3IY989UY87)" -v xxxx.app --deep
#运行完结果如下:
xxxx.app: replacing existing signature
xxxx.app: signed app bundle with Mach-O thin (x86_64) [com.xxxx.xxxx] #此处是Bundle Identifier

#签名完成

权限文件xxxx.entitlements,可以在xcode的工程里去复制一个,也可以根据需要的权限手工编辑:

检查签名结果:

% codesign -dvvv --entitlements  - xxxx.app
Executable=/这里忽略目录/xxxx.app/Contents/MacOS/xxxx
Identifier=com.xxxx.xxxx
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20400 size=18452 flags=0x0(none) hashes=566+7 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=3ed48febdcc36c83hfyuuyt876236f4633bb7b
CandidateCDHashFull sha256=3ed48febdcc36c83a748febdcc36c83hfyuuyt876236f463317fb2f401a8f7a7afaf
Hash choices=sha256
CMSDigest=3ed48febdcc36dcc36c83hfyuuyt876236f46337fb2f401a8f7a7afaf
CMSDigestType=2
CDHash=3ed48febdcc3648dcc36c83hfyuuyt87623332f17236f4633bb7b
Signature size=4854
Authority=3rd Party Mac Developer Application: xxxxxxxxx Co.,Ltd (VQ3IY989UY87)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=Nov 2, 2024 at 01:06:18
Info.plist entries=14
TeamIdentifier=V86876Q87987F
Sealed Resources version=2 rules=13 files=46
Internal requirements count=1 size=232
[Dict]
	[Key] com.apple.developer.usernotifications.communication
	[Value]
		[Bool] true
	[Key] com.apple.security.app-sandbox
	[Value]
		[Bool] true
	[Key] com.apple.security.files.user-selected.read-only
	[Value]
		[Bool] true
	[Key] com.apple.security.files.user-selected.read-write
	[Value]
		[Bool] true
	[Key] com.apple.security.network.client
	[Value]
		[Bool] true
	[Key] com.apple.security.network.server
	[Value]
		[Bool] true
	[Key] com.apple.security.personal-information.photos-library
	[Value]
		[Bool] true
	[Key] com.apple.security.print
	[Value]
		[Bool] true

#下部分是权限列表

4、然后打开xxxx.app,找到里面的Info.plist文件编辑内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleExecutable</key> <!--这个必须要有-->
	<string>xxxx</string>
	<key>CFBundleIconFile</key>
	<string>icon.icns</string>
	<key>CFBundleIdentifier</key> <!--这个必须要有-->
	<string>com.xxxx.xxxx</string>
	<key>CFBundlePackageType</key> <!--这个必须要有-->
	<string>APPL</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>LSMinimumSystemVersion</key>
	<string>10.13</string>
	<key>NOTE</key>
	<string>This file was generated by Qt/QMake.</string>
	<key>NSPrincipalClass</key> <!--这个必须要有-->
	<string>NSApplication</string>
	<key>NSSupportsAutomaticGraphicsSwitching</key>
	<true/>
	<key>CFBundleDisplayName</key> <!--这个尽量要有-->
	<string>我的应用</string>
	<key>CFBundleName</key>
	<string>我的应用</string> <!--这个必须要有-->
	<key>LSApplicationCategoryType</key> <!--这个必须要有-->
	<string>public.app-category.utilities</string>
	<key>CFBundleVersion</key> <!--这个必须要有-->
	<string>100</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0.0</string> <!--这个必须要有-->
	<key>ITSAppUsesNonExemptEncryption</key>
	<false/>
</dict>
</plist>

5、然后,使用productbuild对app进行打包成pkg文件,这里注意使用另外一个安装证书”3rd Party Mac Developer Installer“:

% productbuild --component xxxx.app /Applications/ --sign "3rd Party Mac Developer Installer: xxxxxxxx Co.,Ltd (VQ3IY989UY87)" --product xxxx.app/Contents/Info.plist xxxx.pkg

productbuild: Adding component at /这里省略路径了/Release/智行动力.app
productbuild: Signing product with identity "3rd Party Mac Developer Installer: xxxxxxxx Co.,Ltd (VQ3IY989UY87)" from keychain /Users/hhhhh/Library/Keychains/login.keychain-db
productbuild: Adding certificate "Apple Worldwide Developer Relations Certification Authority"
productbuild: Adding certificate "Apple Root CA"
productbuild: Wrote product to xxxx.pkg
productbuild: Supported OS versions: [Min: 10.13, Before: None]

#上面执行完成

6、最后,将生成pkg文件拖拽到Transporter中,看看Transporter上传检查是否出错,如果不出错就可以发布了。

注意:签名证书和产品打包证书是两个;

其余的就,自求多福吧!

Qt跨平台开发实战:信号槽、图形视图与性能优化全解析 跨平台应用开发框架是实现一套代码多端运行的核心技术,其核心价值在于提升开发效率、保证应用一致性和降低维护成本。在众多技术方案中,基于C++的框架因其高性能和原生体验而备受青睐。信号与槽机制作为对象间通信的基石,通过发布-订阅模式实现松耦合,结合元对象系统提供类型安全,有效替代了传统的回调函数,是构建复杂交互逻辑的关键。图形视图框架则为数据可视化、绘图软件等复杂交互界面提供了场景、视图、图形项三层架构,通过硬件加速和局部更新策略优化渲染性能。在实际工程中,开发者需关注对象生命周期管理、多线程安全及平台特定代码 阅读详情

相关推荐

MAC+QT打包签名公证步骤

mac+qt 打包,签名,公证

justformemory的博客 2316

Mac提示来自身份不明的开发者

Mac安装或者第一次打开软件,经常会出现下面对话框 从用户角度,有两种方法解决这个问题。 1.修改安全性与隐私设置,选择任何来源(系统偏好设置-安全性与隐私) 2.右键-打开 从开发者的角度,则要复杂一些了。 首先看看导致这种现象的原因。简单来说是Mac系统的GateKeeper在安装和打开软件时,对软件的来源和开发者进行校验

vaintwyt 1万+

macOS软件包管理工具pkg深入解析与应用

macOS平台上的软件包管理工具pkg,是系统自带的一个用于安装、更新和管理应用程序和系统组件的工具。通过pkg文件,管理员和开发者可以精确控制软件部署过程,包括文件的复制、权限的设置以及脚本的执行。本章将对pkg工具的功能进行概述,为读者构建起对macOS软件包管理的基础认识。软件包管理器的核心之一是确保软件包的元数据和属性能够被准确无误地传递给安装系统。在macOS的pkg软件包管理工具中,这一职责由Package Info XML文件承担。

weixin_28840811的博客 1801

MAC OS 上的app重新签名与打包

其实最主要的是得到一个合发的证书,如果是app 开发者 可以自己生成,否则别人给的p12文件,导入到mac的钥匙串中。 这里需要两个证书: xxx application 是给app签名 , xxx installer 是给安装包 pkg签名。 1.在Apple Developer上生成证书 这里选 developer id 因为不需要上传到 mac app store ...

C 7815

ChatGPT Web转API工具:原理、部署与集成实战

在AI应用开发中,API(应用程序编程接口)是实现系统间通信和数据交换的核心技术,它通过标准化的请求响应机制,将复杂功能封装为可编程的服务。其工作原理基于HTTP协议,通过定义清晰的端点、方法和数据格式,使不同平台的应用能够高效集成AI能力。这一技术价值在于极大降低了开发门槛,促进了自动化流程和智能功能的快速落地,广泛应用于智能客服、内容生成和创意辅助等场景。本文聚焦于如何通过浏览器自动化技术,将ChatGPT的Web界面能力转化为标准API服务,其中涉及Playwright无头浏览器操作和会话Cookie

weixin_42533910的博客 1758

RK3588部署rtmpose模型

摘要: 本文详细介绍了在RK3588开发板上部署RTMPose模型的全流程。首先在Ubuntu环境中搭建MMCV框架,通过MMPose工具将PTH模型转换为ONNX格式。随后使用RKNN-Toolkit2将ONNX模型转换为RKNN格式,并完成开发板部署。关键步骤包括模型转换(PTH→ONNX→RKNN)、环境配置和推理验证,最终实现人体姿态估计功能。整个过程涉及MMPose、RKNN-Toolkit等工具链的使用,为边缘计算场景下的实时姿态分析提供了可行方案。

qq_44224801的博客 1218

Mac生成pkg安装包

参考: https://stackoverflow.com/questions/11487596/making-macos-installer-packages-which-are-developer-id-ready https://www.unix.com/man-page/osx/1/pkgbuild/ Pkgbuild 创建component package(pkg文件)。 productbuild 创建product archive(也是个pkg文件,可以包含多个component .

嘎布拉 2708

ABB AC500 系列 PLC 与上位机iFix 的通讯配置

在 软件中,有 3 种方式可以进入 IP config tool 的配置界面 双击 IP_settings,点击 IP config tool,即可进入 IP config tool 界面点击菜单栏的 Tool→IP config如果单独安装了 ABB IP Configration,则可以通过开始→程序→ABB→ABB IPConfigration 启动 IP 配置工具启动 IP config tool 后,即可进入 IP 配置界面。

xdpcxq的专栏 4030

跨平台C++开发实战:架构设计、工具链与平台适配全解析

跨平台开发是软件工程中的核心挑战之一,其本质在于通过统一的技术方案解决不同操作系统、硬件架构和系统API之间的差异。从原理层面看,这通常涉及构建平台抽象层(PAL)来封装平台特定实现,使业务逻辑与底层细节解耦。在技术价值上,跨平台方案能显著提升代码复用率、降低维护成本,并确保应用在多种环境下行为一致。常见的应用场景包括游戏引擎、工业控制软件、音视频处理和高频交易系统等对性能和可控性要求极高的领域。本文基于CMake构建系统和现代C++标准,深入探讨了如何通过条件编译、抽象接口以及持续集成等工程实践,构建健壮

weixin_30596023的博客 488

Windows 2008 R2虚拟机跑金蝶K3 WISE 12.1的5个关键配置细节(附避坑清单)

本文详细介绍了在Windows Server 2008 R2虚拟机中部署金蝶K3 WISE 12.1的5个关键配置细节,包括服务器角色与账户权限、组件服务调优、数据库与中间层协同部署、补丁管理策略及性能优化工具。这些实战经验可帮助企业IT团队避免常见陷阱,确保ERP系统稳定运行。

weixin_30847939的博客 317

半导体器件仿真:双极型晶体管仿真_15.双极型晶体管的高级仿真技术

双极型晶体管(Bipolar Junction Transistor, BJT)是一种重要的半导体器件,广泛应用于放大、开关和调制等电路中。随着半导体技术的发展,对BJT的仿真要求也越来越高。本节将详细介绍双极型晶体管的高级仿真技术,包括器件模型的选择、仿真参数的优化、温度效应的考虑以及噪声分析等。

2401_87715305的博客 1241

在Mac系统下发布Qt程序详细教程

Mac系统下发布Qt程序详细教程

chenyijun的专栏 2617

基于多头注意力时间卷积网络(MATCN)的虚拟电厂短期功率预测模型

​时空特征解耦​:TCN负责时间模式,注意力捕捉空间关联​动态门控机制​:自适应调整两种特征的融合比例​多尺度感知​:膨胀卷积覆盖5分钟到24小时的时间跨度​轻量化设计​:参数量比传统Transformer减少52%

hasakie的博客 322

QT for macOS应用程序打包发布App Store记录

第一次用QT开发mac程序,中间踩过各种坑,在此记录下: 一. 打包 1. 如果只用了qt的库,直接用macdeployqt打包就可以了,会按照苹果要求的目录结构把库都拷进去; 2. 如果程序中用到了第三方的库,则先执行步骤1,再把用到的库拷进.app/Contents/Frameworks/目录下; 这里注意一点:需要修改库的包含路径 用otool -L( 例:otool...

xiaohai7521s的专栏 1万+

使用pyqt5实现可勾选的测试用例界面

使用pyqt5实现可勾选的测试用例界面

天赐好车的博客 629

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Qt在Mac系统下发布程序

1.Qt安装 直接下载安装包安装,在安装的过程中会提示安装xcode,选择安装就行。 不用特地去找xcode的安装包。 2.编译好Qt程序后,发布Qt程序。 目前我用的是Qt5.12.9版本,用了第三方的库。 在发布时,不需要自己手动把第三方的库拷贝到.app文件夹(也有可能是因为我用brew安装的缘故,brew这个工具的安装看这里) 2.1对于不是qml程序,直接这样: #需要先cd到你项目的编译目录下,然后再执行下面的语句 /Users/my/Qt5.12.9/5.12.9/clang_64/bin/m

joyopirate的博客 1234

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Mac下发布Qt应用程序(转)

Mac下发布Qt应用程序Qt编写的应用发布到用户手里,同时也要把Qt库一起打包给用户。方法有很多。1. 简单又麻烦的办法,静态编译Qt简单是因为静态编译的Qt库会随着应用一起发布,麻烦是我们必须自己编译静态的Qt。而且,很多情况下我们不仅是要使用Qt,还有很多其它的库,如果每一个都静态编译,我们的执行文件就太巨大了。所以简单的应用,静态编译可能是好的,但是,比较大的项目,这种方法就不推荐了。2.

Mage的专栏 2559

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

第一步: 用xcode打开QT程序 在命令行中QT项目根目录下执行:qmake project.pro -spec macx-xcode 生成对应的后缀名为.xcodeproj的文件,然后使用XCode就可以打开了 参考:http://jingyan.baidu.com/article/22fe7ced3ebb0d3003617f62.html            http:

casun_li的专栏 3525

Qt for Mac:发布程序(widgets和quick2)

转载地址:http://www.cnblogs.com/findumars/p/4763731.html 当你用Qt开发好程序后,是不是会很期待将你的成果分享给你的小伙伴 可是Qt的库并不是OS X标配的,所以我们要自己去复制库到app包里,才可以让app在其他未安装Qt的电脑上运行。   比较幸运的是,Qt为我们提供了macdeployqt工具,借助于此,

无与伦比BLOG 830

Qt在macOS(含第三方库)应用程序打包发布流程

Qt在macOS(含第三方库)应用程序打包发布流程 若不含第三方库只需要执行步骤一即可。 1. 生成安装包 macdeployqt utilTest.app -dmg // 打包release版的app 在qt生成的release工程目录下打开终端运行上述命令 2. 查看依赖的动态库及其路径 3. 修改依赖的动态库的路径 install_name_tool -change "libtest.dylib" "@rpath/mylib/libtest.dylib" Test.app/Contents/M

qq_38502914的博客 3695

mac笔记一

Mac笔记一: 1.查看os的版本:    打开终端:在finder中 应用程序->实用工具 ->终端     用more命令查看more /System/Library/CoreServices/SystemVersion.plist    结果如下:         ProductBuildVersion         14A389a         Produ

oklizy的专栏 863

Signing Installer Packages

Signing Installer Packages Xcode does not create signed installer packages for you. Instead, you create signed installer packages (with a .pkg extension) by supplying an installer signing identit

Endless Encoding 424

Qt for MacOS上架App Store需要注意的系统定制化开发点

用Qt开发Mac App超过5年时间,之前也单独用Cocoa上架了一款Mac软件,但如果考虑的是跨平台Win和Linux的需求,基本还是用Qt为主。浏览器只能用WKWebview,不能使用任何非Webkit内核的浏览器,比如CEF,WebEngine。6. Ping处理,因Mac平台下断线重连比Win下要慢很多,故采用了PING服务器IP进行快速重连操作,这里封装了SimplePing的开源代码,故此不再展示。苹果有浅色,深色和自动三种皮肤模式。4. 窗口标题栏定制,设置高度,存放按钮,修改样式等。

u011070592的博客 964

qt-qml移动开发之在ios上开发和部署app流程简介

转至: http://www.seanyxie.com/qt-qml%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91%E4%B9%8B%E5%9C%A8ios%E4%B8%8A%E5%BC%80%E5%8F%91%E5%92%8C%E9%83%A8%E7%BD%B2app%E6%B5%81%E7%A8%8B%E7%AE%80%E4%BB%8B/ ------------

lihancheng的专栏 1864

MAC 下 Qt 程序打包

mac qt 打包

qq_33259248的博客 2384
上一篇: 解决QT打包发布App Store时(90238)错误
下一篇: Uniapp打包发布App Store时(90894)错误
马克的大菠萝
博客等级 码龄20年 40粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值