QT打包Macosx应用发布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.pkgproductbuild: 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打包Macosx应用发布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…...
untiy mlagents 飞机大战 ai训练
前言 之前那个python源码的飞机大战bug过多,还卡顿,难以继续训练。可直接放弃的话又不甘心,所以找了个unity版本的飞机大战继续(终于不卡了),这次直接使用现成的mlagents库。 过程 前前后后花了两周时间,甚至因此拖…...
从0开始学统计-什么是中心极限定理
引言 中心极限定理(Central Limit Theorem, CLT)是统计学中的一块基石,它揭示了一个难以置信的数学现象:无论一个随机变量的原始分布如何,只要我们取足够大的样本量,这些样本的平均值(或总和&a…...
工具方法 - 个人活动的分类
人类活动的分类是一个复杂的话题,因为人类的活动范围非常广泛且相互交叉。然而,我们可以尝试将人类的活动大致分为以下几个主要类别: 工作活动 工作活动是人类生活中不可或缺的一部分,通常包括以下方面: 1. 职业工作&a…...
11.1组会汇报-基于区块链的安全多方计算研究现状与展望
基础知识 *1.背书,这个词源来自银行票据业务,是指票据转让时,原持有人在票据背面加盖自己的印鉴,证明该票据真实有效、如果有问题就可以找原持有人。 区块链中的背书就好理解了。可以简单的理解为验证交易并声明此交易合法&…...
ubuntu【桌面】 配置NAT模式固定IP
DHCP分配导致虚拟机IP老变,SSH老要重新配置,设成静态方便些 一、设NAT模式 1、设为NAT模式 2、看模式对应的虚拟网卡 - VMnet8 3、共享主机网卡网络到虚拟网卡 - VMnet8 二、为虚拟网卡设置静态IP 记住这个IP 三、设置ubuntu固定IP 1、关闭DHCP并…...
评估 机器学习 回归模型 的性能和准确度
回归 是一种常用的预测模型,用于预测一个连续因变量和一个或多个自变量之间的关系。 那么,最后评估 回归模型 的性能和准确度非常重要,可以帮助我们判断模型是否有效并进行改进。 接下来,和大家分享如何评估 回归模型 的性能和准…...
如何下载安装TestLink?
一、下载TestLink、XAMPP TestLink 下载 |SourceForge.net 备用:GitHub - TestLinkOpenSourceTRMS/testlink-code: TestLink开源测试和需求管理系统 下载XAMPP: Download XAMPP 注意:TestLink与PHP版本有关系,所以XA…...
基于SSM+微信小程序的订餐管理系统(点餐2)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的订餐管理系统实现了管理员和用户。管理端实现了 首页、个人中心、用户管理、菜品分类管理、菜品信息管理、订单信息管理、配送信息管理、菜品评价管理、订单投诉管理、…...
【C++排序 双指针】1996. 游戏中弱角色的数量|1996
本文涉及的基础知识点 排序 C算法:滑动窗口及双指针总结 本题其它解法 【C单调栈 排序】1996. 游戏中弱角色的数量|1996 LeetCode1996. 游戏中弱角色的数量 你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个…...
GESP4级考试语法知识(捕捉异常)
参考程序代码: #include <iostream> using namespace std;double divide(double a, double b) {if (b 0) {throw "Division by zero error"; // 抛出异常}return a / b; }int main() {double num1, num2;cout << "Enter two numbers:…...
HTML 基础标签——元数据标签 <meta>
文章目录 1. `<meta>` 标签概述2. 属性详解2.1 `charset` 属性2.2 `name` 属性2.3 `content` 属性2.4 `http-equiv` 属性3. 其他常见属性小结在 HTML 文档中,元数据标签 <meta> 是一种重要的标签,用于提供关于文档的信息,这些信息不直接显示在网页内容中,但对于…...
栈虚拟机和寄存器虚拟机,有什么不同?
本来这节内容是打算直接讲字节码指令的,但讲之前又必须得先讲指令集架构,而指令集架构又分为两种,一种是基于栈的,一种是基于寄存器的。 那不妨我们这节就单独来讲讲栈虚拟机和寄存器虚拟机,它们有什么不同࿰…...
Windows下基于fping进行批量IP测试
fping是Linux下一个很好用的IP测试工具,结合代码可以完成批量的IP测试,在网络调试中用途很广。本文是基于fping for Windows结合bat批处理,定制的测试脚本样例。 一、程序信息 本次测试使用fpingV5.1 for Windows版,版本信息如下…...
一款实用的Word文档图片转换与水印保护工具
目录 前言软件功能简介软件实现方法及关键代码 1. Word 文档转图片的实现2. 图片水印添加功能3. 生成数字指纹(哈希值)4. 保存图片信息到 JSON 文件 软件的实际使用场景软件操作指南 1. 下载和安装2. 操作流程 总结 1,前言 在日常办公和内…...
优化用于传感应用的衬底集成波导技术
ANSYS HFSS 是一款功能强大的电磁仿真软件,支持为微流体生物传感器应用设计和分析衬底集成波导 (SIW) 技术。它为快速设计优化、材料选择、系统集成和虚拟原型制作提供了一个强大的平台。借助 ANSYS HFSS,研究人员和工程师可以高效…...
Java多态特性的向上转型
Java的多态特性通过向上转型来实现。向上转型指的是将子类对象赋值给父类引用变量的操作。这样做的好处是可以使用父类引用变量来调用子类对象的方法。 例如,有一个父类Animal和一个子类Dog,可以这样进行向上转型: Animal animal new Dog(…...
C++ 判断语句的深入解析
C 判断语句的深入解析 C 是一种广泛使用的编程语言,以其高效性和灵活性著称。在 C 中,判断语句是控制程序流程的关键组成部分,它们允许程序根据不同的条件执行不同的代码路径。本文将深入探讨 C 中的判断语句,包括 if、else if、…...
15分钟学 Go 第 33 天:项目结构
第33天:项目结构 目标:了解Go项目的典型结构 在Go语言的开发中,项目结构的合理性直接影响着代码的可维护性、可扩展性和团队协作效率。本篇文章将深入探讨Go语言的典型项目结构,并提供实际示例代码和相关的流程图。 一、Go项目…...
conda迁移虚拟环境路径
方法一:使用软连接 ln -s ~/Anaconda3/envs /new/path/envs 方法二:修改~/.condarc文件 1.打开~/.condarc文件 #添加下面参数 envs_dirs: - /newpath/anaconda3/envs pkgs_dirs: - /newpath/anaconda3/pkgs 2. source ~/.bashrc 3.查看是否成功con…...
SpringBoot+Vue家政服务网站源码+论文
代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择: 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...
第19篇:多个PI控制器串联控制系统设计与参数整定调试实战
本篇前置知识:掌握自动控制基础原理、熟悉单回路PI控制算法、了解工控闭环系统、会基础Python编程、接触过PLC实操与工控数据采集。 你是否遇到过? 痛点1:只会调试单回路PI控制,碰到多级串联被控对象,系统震荡剧烈、响…...
3分钟部署RevokeMsgPatcher:Windows平台微信QQ消息防撤回终极指南
3分钟部署RevokeMsgPatcher:Windows平台微信QQ消息防撤回终极指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https:/…...
告别Postman!用VSCode REST Client插件管理你的HTTP请求(附环境变量实战)
告别Postman!用VSCode REST Client插件管理你的HTTP请求(附环境变量实战) 在开发者的日常工作中,API调试是不可或缺的一环。传统上,Postman等独立工具占据了主导地位,但随着开发工具链的整合趋势࿰…...
5分钟打造个性化Windows桌面:RoundedTB任务栏美化终极指南
5分钟打造个性化Windows桌面:RoundedTB任务栏美化终极指南 【免费下载链接】RoundedTB Add margins, rounded corners and segments to your taskbars! 项目地址: https://gitcode.com/gh_mirrors/ro/RoundedTB 厌倦了Windows千篇一律的方块任务栏࿱…...
3个场景解锁BongoCat:让呆萌猫咪成为你的终极桌面生产力伙伴
3个场景解锁BongoCat:让呆萌猫咪成为你的终极桌面生产力伙伴 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 在…...
OpenClaw+GLM-4.7-Flash:个人旅行计划自动生成与优化
OpenClawGLM-4.7-Flash:个人旅行计划自动生成与优化 1. 为什么需要AI旅行助手? 去年夏天,我计划带家人去云南旅行时,花了整整三个晚上对比机票价格、筛选酒店、计算景点间的交通时间。当我在凌晨两点盯着Excel表格里混乱的日期和…...
从逗号到标签:用React 19 + TailwindCSS V4构建智能选项解析器
1. 为什么需要智能标签解析器? 在日常开发中,我们经常遇到这样的场景:用户需要输入多个选项,比如商品标签、兴趣关键词或者任务分类。传统做法是让用户手动输入每个标签后按回车,这种体验既笨拙又低效。而一个优秀的智…...
数字古籍下载工具bookget:从技术实现到应用实践
数字古籍下载工具bookget:从技术实现到应用实践 【免费下载链接】bookget bookget 数字古籍图书下载工具 项目地址: https://gitcode.com/gh_mirrors/bo/bookget 在数字化时代,学术研究与文化传承越来越依赖数字资源的获取效率。数字古籍下载作为…...
Qwen2.5-VL-7B-Instruct详细步骤:GPTQ量化模型加载与推理加速技巧
Qwen2.5-VL-7B-Instruct详细步骤:GPTQ量化模型加载与推理加速技巧 1. 项目概述 Qwen2.5-VL-7B-Instruct是一款强大的多模态视觉-语言模型,能够同时处理图像和文本输入,生成高质量的响应。本指南将详细介绍如何通过GPTQ量化技术来优化模型加…...
