使用QtWebEngine的Mac应用如何发布App Store

前言

因为QtWebEngine时第三方包,苹果并不直接支持进行App Store上签名和发布,所以构建和发布一个基于使用QtWebEngine的应用程序并不容易,这里我们对Qt 5.8稍微做一些修改,以便让我们的基于QtWeb引擎的应用程序并让签名能够得到苹果的许可。

QtWebEngine提供了C++和Qml的接口,可以在Widget/Qml中渲染HTML、XHTML、SVG,也支持CSS样式表和JavaScript脚本。

QtWebEngine的架构图如下

基于Chromium封装了一个WebEngineCore模块,在此之上,WebEngine Widgets模块专门用于Widget项目,WebEngine 模块用于Qml项目,WebEngineProcess则是一个单独的进程,用来渲染页面、运行js脚本。Web在单独的进程里,我们开发的时候知道这一点就好了,不需要额外关注,只要在发布的时候,带上QTDIR目录下的可执行程序QtWebEngineProcess即可。

WebEngine的平台要求

首先一条是:不支持静态编译 (因为依赖的chromium、chromium本身的依赖库 不能静态编译)接下来再看看各平台的要求和限制:

Windows

编译器要 Visual Studio 2017 version 15.8 以上
系统环境要 Windows 10 SDK
默认只支持X64版本,如果要x86版本,要自己编译qt源码。

MacOS

  • MacOS 10.12以上
  • XCode 8.3.3以上
  • MacOS 10.12以上 SDK

不支持32-bit

不兼容 Mac App Store (chromium使用了私有api,App Sandbox和chromium Sandbox优先级问题)

Linux

编译器要 clang, 或者 gcc 5以上
需要pkg-config来探测依赖库,dbus-1和 fontconfig是必须的。
如果配置了xcb,还要额外配置相关库。

WebView

Qt还提供了一个WebView组件,可以用来将Web内容嵌入到Qml程序中。(这个没有提供Widget的接口)
WebView组件的实现,使用了平台原生api,在移动端意义重大,特别是在ios平台,使用原生的web view,这样就能兼容App Store了。

第一、修改WebEngine三方包

下面我们开始解决如何使用3rd Party Mac Developer Application进行签名的全过程,这样的应用就可以发布App Store。

从理论上讲,QtWebEngine自Qt5.7以来只需重建即可与Apple Mac Store兼容,但由于Chromium库代码和Apple Mac Store规则的变化,即使对于Qt5.9 LTS版本来说,重建目前也是不够的。

我们使用Qt 5.8是因为我们想保持对macOS 10.9的支持,我们还没有用Qt 5.9 LTS进行测试。

首先需要安装Qt源代码,这可以使用MainenanceTool应用程序完成。

第二、Entitlements权限

您需要一个包含以下内容的权限文件(除了主应用程序之一)来签署QtWebEngineProcess应用程序,格式如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能新纪元:人工智能技术的社会影响与伦理挑战-亿发

在数字化时代,人工智能(AI)正以其不可阻挡之势,深刻改变着我们的生产、生活和学习方式。它不仅是一项技术革命,更是推动社会进步的重要力量。本文将探讨人工智能如何重塑未来,以及它所带来的深远影响。 AI…

云平台虚拟机运维笔记整理,使用libvirt创建和管理虚拟机,以及开启虚拟机嵌套,虚拟磁盘扩容,物理磁盘扩容等等

云平台虚拟机运维笔记整理,使用libvirt创建和管理虚拟机,以及开启虚拟机嵌套,虚拟磁盘扩容,物理磁盘扩容等等。 掌握和使用qemu和libvirt,分别使用它们创建一个cirros虚拟机,并配置好网络。 宿主机node0的系统为ubuntu16,IP为192.168.56.200。 qemu和libvirt简介 QEMU…

Python中处理Excel的基本概念(如工作簿、工作表等)

在之前的讨论中,我们已经了解了Python如何与Excel文件进行交互,包括使用Python中的不同库来读取和写入Excel文件。现在我们将进一步探讨Python中处理Excel文件的基本概念,如工作簿(Workbook)、工作表(Works…

mac crontab 不能使用问题简记

需要 crontab 有权限,如下截图设置 在访达上方【前往】-》【前往文件夹】输入/ 然后按 Command Shift . 显示隐藏文件,然后将 usr 放到左边栏 然后如下操作 系统设置中找到 隐私安全->完全访问磁盘 点击小锁头 点击号,将/usr/bin/c…

超简单安装油猴(tampermonkey)最新教程(保姆级)

文章目录 ‌‌Tampermonkey的简单介绍一、下载二、安装方法1.Chrome浏览器安装方法2.Microsoft Edge浏览器安装方法3.Opera浏览器安装方法 ‌‌Tampermonkey的简单介绍 ‌‌Tampermonkey是一个浏览器扩展程序,允许用户安装和管理各种用户脚本,这些脚本可…

python 如何将dataframe数据批量插入到clickhouse

1. 背景-问题描述 最近做一个资产数据清洗工作,结束后需要将数据批量插入到clickhouse;查找并尝试了好几种批量插入的方式均已失败告终;现就查到的dataframe类型数据批量插入到clickhouse记录和汇总于此。 2. 配置信息 python 3.12 clickh…

利用 TensorFlow 与 Docker 构建深度学习模型训练与部署流水线

在深度学习领域,构建、训练和部署模型是一个复杂且耗时的过程。本文将介绍如何利用 TensorFlow 构建深度学习模型,并通过 Docker 容器化技术实现模型的训练与部署,从而简化整个流水线,提高开发效率。我们将通过实战代码&#xff0…

DevOps业务价值流:架构设计最佳实践

系统设计阶段作为需求与研发之间的桥梁,在需求设计阶段的原型设计评审环节,尽管项目组人员可能未完全到齐,但关键角色必须到位,包括技术组长和测试组长。这一安排旨在同步推进两项核心任务:一是完成系统的架构设计&…

强化学习之课程学习法

作者名片 🤵‍♂️ 个人主页:抱抱宝 😄微信公众号:宝宝数模AI ✍🏻作者简介:阿里云专家博主 | 持续分享机器学习、数学建模、数据分析、AI人工智能领域相关知识,和大家一起进步! &am…

计算机网络:网络层 —— 网络地址转换 NAT

文章目录 网络地址转换 NAT 概述最基本的 NAT 方法NAT 转换表的作用 网络地址与端口号转换 NAPTNAT 和 NAPT 的缺陷 网络地址转换 NAT 概述 尽管因特网采用了无分类编址方法来减缓 IPv4 地址空间耗尽的速度,但由于因特网用户数量的急剧增长,特别是大量小…

leetcode 633. 平方数之和 中等

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a*ab*bc 。 示例 1: 输入:c 5 输出:true 解释:1 * 1 2 * 2 5示例 2: 输入:c 3 输出:false提示&#…

一、文心一言问答系统为什么要分对话,是否回学习上下文?二、文心一言是知识检索还是大模型检索?三、文心一言的词向量、词语种类及多头数量

目录 一、文心一言问答系统为什么要分对话,是否回学习上下文? 二、文心一言是知识检索还是大模型检索? 三、文心一言的词向量、词语种类及多头数量 一、文心一言问答系统为什么要分对话,是否回学习上下文? 文心一言问答系统分对话的原因在于其设计初衷就是提供一个交互…

Qt第三课 ----------容器类控件

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

nacos注册中心简介

当前现状与需求 随着微服务架构的普及,服务之间的通信和管理变得越来越复杂。传统的服务发现和配置管理方式已经无法满足现代应用的需求。在这种背景下,Nacos 应运而生,成为了一个强大的服务发现和配置管理工具。 1. 当前现状 服务发现&#…

Oracle Sql查询和性能优化(持续更新)

目录 索引优化 查询重写 EXISTS vs. IN 避免全表扫描 合理使用UNION操作符 优化子查询 执行计划分析 表设计优化 规范化与反规范化 分区表 存储参数调整 SGA配置 共享池 数据缓冲区 SGA自动管理 PGA配置 RAID配置 日志文件优化 性能诊断工具 AWR ASH 定期…

Java的基本语法

Java的基本语法是编写Java程序时必须遵循的规则和结构。以下是一些Java基本语法的关键点: 命名规范 在Java编程中,遵循一定的命名规范是非常重要的,它有助于代码的可读性和维护性,可参考(https://blog.csdn.net/hwh2…

运放进阶篇-多种波形可调信号发生器-产生方波-三角波-正弦波

引言:前几节我们已经说到硬件相关基础的电路,以及对于运放也讲到了初步的理解,特别是比较器的部分,但是放大器的部分我们对此并没有阐述,在这里通过实例进行理论结合实践的学习。而运放真正的核心,其实就是…

蓝桥杯c++算法学习【1】之枚举与模拟(卡片、回文日期、赢球票:::非常典型的比刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵!!! 关注博主,更多蓝桥杯nice题目静待更新:) 枚举与模拟 一、卡片: 【问题描述】 …

使用Netty实现一个简单的聊天服务器

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:Netty 🥭本文内容&a…

用discuz开发一款网站自动秒收录源码功能更强悍更安全

用discuz开发一款网站自动秒收录源码功能更强悍更安全 在当今数字化时代,网站的曝光率和访问量是衡量其成功与否的重要指标。为了提升网站的曝光率,自动秒收录技术应运而生。而Discuz平台作为知名的社区管理系统,为开发者提供了丰富的功能和…