当前位置: 首页 > news >正文

如何将 Electron 项目上架 Apple Store

前言

Electron 是一个开源框架,它允许开发者使用 Web 技术(HTMLCSSJavaScript)来构建跨平台的桌面应用程序。

Electron 应用程序可以运行在 WindowsmacOSLinux 上,为用户提供了一种统一的方式来开发和维护软件。

本文将探讨如何将 Electron 构建的桌面应用程序上架到 App Store 中。

创建证书

进入苹果开发者平台

https://developer.apple.com/account

进入证书列表:

创建证书(Certificates)

Certificates 用于对需要上架应用进行签名

创建 Apple DevelopmentApple Distribution 两个证书。

Apple Development 证书用于在 Apple Developer 网站上注册的计算机上签署用于开发和测试的应用程序。

注册方法会在准备配置文件中描述。

带有 Apple Development 证书签名的应用无法提交到 Mac 应用商店。

为此,应用程序必须使用 Apple Distribution 证书进行签名。

但请注意,使用 Apple Distribution 证书签名的应用程序不能直接运行,它们必须由 Apple 重新签名才能运行,也就是只有从 Mac 应用商店下载后才能运行。

创建&上传证书签名请求

在启动台中找到“钥匙串访问”

在“常用名称”栏位中,输入密钥的名称。

将“CA 电子邮件地址”栏位留空。

选择“存储到磁盘”,然后点按“继续”,将证书保存到本地即可。

回到刚才创建证书的页面,选择刚刚生成的 CSR 文件

至此 Apple Development 的证书创建完成

用同样的方式再创建好 Apple Distribution 证书

创建ID(identifier)

identifier 应用的唯一标识

注册开发设备

获取开发设备id:设置->通用->关于本机->系统报告

进入设备管理页面添加设备

分两次将你设备的 UDIDUUID 填入 Device ID 中(特别是m1以上的机型,一定需要分两次填写)

安装证书

打开 Apple PKI,下载以下的证书并安装

https://www.apple.com/certificateauthority/

如果已有则跳过此步骤

创建provisioning profile

每个应用需要创建两个 provisionprofile,分别是 developmentdistribution,后续如果证书、设备、应用Id有任何变更都要到这里来更新 profile

创建 development 时请记得勾选全部的设备。

创建 distribution 时要选择 Apple Distribution 的证书。

profile 生成完下载到项目文件夹下,然后双击安装 development 描述文件,并且必须安装上。

申请 DevelopmentDistribution 各自的 profile 文件

注意,下载 profile 后记得双击安装 development 描述文件

xcode相关操作

进入 xcode 设置,点击 Settings->Accounts,登录你的开发者账号,点击右下角 Download Manual Profiles,此时会将你开发者账号中的 profiles 全部更新到 xcode 中。

每次在 apple developer 中新增 provisioning profile 都要到这里点击 Download Manual Profiles,否则你的 Transporter 将无法上传应用到 Mac App Store

点击 Manage Certificates ,确保里面有最开始配置的 certificates ,主要是 Mac DevelopentMac App Distribution 证书。

打包应用

1、创建 entitlements.mas.plist 文件

此文件用来记录和声明应用的权限,这里的权限最终会被合并到 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"

相关文章:

如何将 Electron 项目上架 Apple Store

前言 Electron 是一个开源框架,它允许开发者使用 Web 技术(HTML、CSS 和 JavaScript)来构建跨平台的桌面应用程序。 Electron 应用程序可以运行在 Windows、macOS 和 Linux 上,为用户提供了一种统一的方式来开发和维护软件。 本文将探讨如何将 Electron 构建的桌面应用程…...

R语言统计分析——功效分析2(t检验,ANOVA)

参考资料&#xff1a;R语言实战【第2版】 1、t检验 对于t检验&#xff0c;pwr.t.test()函数提供了许多有用的功效分析选项&#xff0c;如下&#xff1a; pwr.t.test(n,d,sig.level,power,type,alternative) 其中&#xff0c;n为样本大小&#xff1b; d为效应值&#xff0c;即…...

android 侧滑返回上一界面备忘

ParfoisMeng/SlideBack: 无需继承的Activity侧滑返回库 类全面屏返回手势效果 仿“即刻”侧滑返回 (github.com)...

golang学习笔记18——golang 访问 mysql 数据库全解析

推荐学习文档 golang应用级os框架&#xff0c;欢迎star基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总golang学习笔记01——基本数据类型golang学习笔记02——gin框架及基本原理golang学习笔记03——gin框架的核心数据结构golang学…...

苹果账号登录后端验证两种方式 python2

import time import jwt import requests import json import base64def decode_jwt(jwt_token):try:h,p,s jwt_token.split(.)except:return {},{},{},"","",""header json.loads(base64.urlsafe_b64decode(h )) # 可能需要调整填充pa…...

FlinkCDC 3.2.0 新增优点 Pattern Replacement in routing rules

新增优点&#xff1a;Pattern Replacement in routing rules flinkcdc 3.2.0版本相较于3.1.0版本&#xff0c;避免了多表多sink多次写 route 路由的麻烦&#xff0c;类似于统一前后缀的形式多表多sink&#xff0c;通过<>正则&#xff0c;大大减少了书写 官网&#xff1…...

《 C++ 修炼全景指南:六 》深入探索 C++ 标准库中的 stack 与 queue 容器适配器

1、引言 1.1、容器适配器的概念与应用 容器适配器&#xff08;Container Adapters&#xff09;是 C 标准库提供的一种特殊容器&#xff0c;它不是一种独立的容器&#xff0c;而是对其他标准容器的封装&#xff0c;用来实现特定的数据结构如栈&#xff08;stack&#xff09;和…...

高级java每日一道面试题-2024年9月07日-JVM篇-说一下类加载的执行过程?

如果有遗漏,评论区告诉我进行补充 面试官: 说一下类加载的执行过程? 我回答: 在Java中&#xff0c;类的加载是一个重要的过程&#xff0c;它是由Java虚拟机&#xff08;JVM&#xff09;的类加载器系统负责的。类加载的过程不仅仅包括加载类的字节码到内存中&#xff0c;还包…...

笔试强训day09

添加逗号 import sysa list(input())[::-1] s "" cnt 0 for v in a:cnt 1s vif cnt%30:s , print(s.rstrip(,)[::-1])跳台阶 import sys import functools functools.cache def dfs(u):if u1 or u2:# print(f"u {u}")return ureturn dfs(u-1)dfs(…...

软件测试中的黑盒测试方法,包括其定义、目的及主要步骤。

黑盒测试&#xff08;Black Box Testing&#xff09;是一种软件测试方法&#xff0c;它侧重于软件的功能性需求验证&#xff0c;而不考虑程序内部结构或代码实现细节。这种方法是从最终用户的角度出发&#xff0c;检查系统是否按照规格说明书的要求工作。黑盒测试的主要目的是验…...

Shell脚本计算π的近似值

计算π的公式很多,本文使用“π的莱布尼茨公式”来计算π的近似值,对应的公式如下: http://upload.wikimedia.org/math/9/e/8/9e804b8a1a11e442be93fed1d52205a9.png 由此我们可以得到求解π的公式为:π=4*(1-(1/3)+(1/5)-(1/7)+(1/9)...) 下面是在linux下使用shell脚本命令…...

进程间通信之消息队列

作用 进程间通信 特点 1 、消息队列中的消息是有类型的。 类型 : 自定义的结构体 , 第一个成员必须是 long 型的 . 表示为该消息的类型 如 : typedef struct 结构体名称 { long type; // 消息的正文 char name[50]; char sex[10]; int age; ... } 别名 ; 2 、消息队…...

人生苦短我用Python 5-xlwings自动调整表格

人生苦短我用Python 5-xlwings自动调整表格 前言依赖主要类App类Books类Sheet 类 示例代码 前言 使用pandas库openpyxl库实现了csv与excel文件的互相转换&#xff0c;csv转excel后若数据超出了单元格的宽度&#xff0c;部分数据无法完整显示。需要手动打开Excel文件&#xff0…...

移动跨平台框架Flutter详细介绍和学习线路分享

Flutter是一款移动应用程序SDK&#xff0c;一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。 Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。我们兼容滚动行为、排版、图标等方面的差异。 在全世界&#xff0c;Flutter正在被越…...

线性代数基础:向量、矩阵、张量及其在机器学习中的应用详解

线性代数基础&#xff1a;向量、矩阵、张量及其在机器学习中的应用详解 线性代数基础&#xff1a;向量、矩阵、张量及其在机器学习中的应用详解一、向量 (Vectors)1. 向量的定义2. 向量在机器学习中的应用3. 向量空间 二、矩阵 (Matrices)1. 矩阵的定义2. 矩阵在机器学习中的应…...

Dockerfile中的RUN、CMD、ENTRYPOINT指令区别

RUN在构建过程中在镜像中执行命令。CMD容器创建时的默认命令。&#xff08;可以被覆盖&#xff09;ENTRYPOINT容器创建时的主要命令。&#xff08;不可被覆盖&#xff09; 指令介绍 1.RUN 在构建过程中在镜像中执行命令&#xff0c;是在 docker build中执行 2.CMD 作用&am…...

css grid布局属性详解

Grid布局 前言一、认识Grid1.1容器和项目1.2行和列1.3单元格和网格线 二、容器属性2.1.grid-template-columns与grid-template-rows属性2.1.1 直接使用长度单位比如px2.1.2 使用百分比 %2.1.3 使用repeat函数2.1.4 按比例划分 fr 关键字2.1.5 自动填充 auto 关键字2.1.6 最大值…...

Tranformer分布式特辑

随着大模型的发展&#xff0c;如何进行分布式训练也成了每位开发者必备的技能。 1. 单机训练 CPU OffloadingGradient Checkpointing 正向传播时&#xff0c;不存储当前节点的中间结果&#xff0c;在反向传播时重新计算&#xff0c;从而起到降低显存占用的作用 Low Precision…...

【Moveit2官方教程】使用 MoveIt Task Constructor (MTC) 框架来定义和执行一个机器人任务

#include <rclcpp/rclcpp.hpp> // ROS 2 的核心库 #include <moveit/planning_scene/planning_scene.h> // MoveIt 规划场景相关的头文件 #include <moveit/planning_scene_interface/planning_scene_interface.h> // MoveIt 规划场景接口 #include <m…...

使用docker配置wordpress

docker的安装 配置docker yum源 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo下载最新版本docker sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-…...

【雷达成像】主动式毫米波安检成像【含Matlab源码 15238期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab武动乾坤博客之家&#x1f49e;…...

深入解析原生HTTP与MCP服务器的交互机制

1. 原生HTTP与MCP服务器交互的核心机制 当你第一次听说MCP服务器时&#xff0c;可能会觉得这是个高大上的概念。其实简单来说&#xff0c;MCP&#xff08;Model Context Protocol&#xff09;就是一种让客户端和AI模型服务端进行高效通信的协议。而HTTP作为互联网最基础的通信协…...

【单片机实战】中断服务程序编写精要:从现场保护到中断返回

1. 中断服务程序的核心作用与基本结构 第一次接触单片机中断时&#xff0c;我盯着开发板上的按键发愣——明明没有循环检测IO口状态&#xff0c;按下按键却能立即触发LED亮灭。这种"随叫随到"的响应机制&#xff0c;就是中断服务程序&#xff08;ISR&#xff09;的魔…...

PingFangSC跨平台字体解决方案:企业级部署与性能优化指南

PingFangSC跨平台字体解决方案&#xff1a;企业级部署与性能优化指南 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件&#xff0c;包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在数字化转型浪潮中&#xff0c;企业…...

MediaPipeUnityPlugin技术解构与实战指南:Unity AI视觉开发进阶之路

MediaPipeUnityPlugin技术解构与实战指南&#xff1a;Unity AI视觉开发进阶之路 【免费下载链接】MediaPipeUnityPlugin Unity plugin to run MediaPipe 项目地址: https://gitcode.com/gh_mirrors/me/MediaPipeUnityPlugin 问题发现&#xff1a;Unity AI视觉开发的现实…...

告别彻夜等待:SteamShutdown让游戏下载完成后自动关机的智能解决方案

告别彻夜等待&#xff1a;SteamShutdown让游戏下载完成后自动关机的智能解决方案 【免费下载链接】SteamShutdown Automatic shutdown after Steam download(s) has finished. 项目地址: https://gitcode.com/gh_mirrors/st/SteamShutdown 你是否也曾经历过这样的困扰&a…...

给STM32密码锁加个“记忆”:手把手教你用CubeMX配置I2C读写EEPROM(AT24C02)

为STM32密码锁赋予持久记忆&#xff1a;CubeMX驱动AT24C02 EEPROM全攻略 当你的密码锁在断电后依然能记住最后一次设置的密码&#xff0c;这种"记忆"能力往往能大幅提升用户体验。本文将带你深入探索如何通过I2C总线连接AT24C02 EEPROM芯片&#xff0c;为基于STM32F1…...

3分钟打造个性化英雄联盟体验:LeaguePrank工具让段位展示彻底自定义

3分钟打造个性化英雄联盟体验&#xff1a;LeaguePrank工具让段位展示彻底自定义 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 你是否曾想在好友面前展示独特的游戏段位&#xff1f;是否希望自己的游戏生涯页面与众不同&…...

SDMatte效果深度评测:复杂发丝与透明物体的抠图表现

SDMatte效果深度评测&#xff1a;复杂发丝与透明物体的抠图表现 1. 开篇&#xff1a;当AI遇到抠图难题 抠图技术发展了几十年&#xff0c;但遇到复杂发丝和透明物体时&#xff0c;传统方法往往束手无策。直到AI技术的介入&#xff0c;这个老大难问题才有了突破性进展。SDMatt…...

PP-DocLayoutV3入门必看:从零部署到JSON结构化输出完整流程

PP-DocLayoutV3入门必看&#xff1a;从零部署到JSON结构化输出完整流程 1. 开篇&#xff1a;认识文档布局分析利器 你是否曾经遇到过这样的困扰&#xff1a;面对扫描的文档图片&#xff0c;想要提取其中的文字和结构信息&#xff0c;却不知道从何下手&#xff1f;或者需要处理…...