再谈IOS开发环境配置(2023-09-01 新)

        关于IOS的开发,需要配置证书、密钥、管理标识符、功能配置等等,很是繁杂,以前也配置过,这次因为重新购买了新的M1笔记本,准备重新配置下,顺便记录,以便查询。

        如果要开发IOS,首先需要在苹果开发者官网申请注册账户,付费后才可以,每年大概688元,关于注册账户等,不在本文讨论范围。

        官方帮助文档

一、证书类型

类型

用途

Apple 开发

用于 Xcode 11 及更高版本。

在设备上运行 iOS、macOS、Apple tvOS 或 watchOS App,并在开发过程中使用特定的 App 服务。

Apple 分发

用于 Xcode 11 及更高版本。

向指定设备分发你的 iOS、macOS、Apple tvOS 或 watchOS App 以进行测试或将其提交到 App Store。

APNs 授权密钥

生成服务器端令牌来代替通知请求的证书。

Apple 推送服务

在你的通知服务与 APNs 之间建立连接,以向你的 App 发送远程通知。

iOS 开发

在设备上运行 iOS、Apple tvOS 或 watchOS App,并在开发过程中使用特定的 App 服务。

iOS 分发

向指定设备分发你的 iOS、Apple tvOS 或 watchOS App 以进行测试或将其提交到 App Store。

Mac 开发

在开发和测试期间为 Mac App 启用特定的 App 服务。

Mac App 分发

在将 Mac App 提交到 Mac App Store 之前对其进行签名。

Mac 安装器分发

对包含你已签名 App 的 Mac 安装器软件包进行签名,并提交到 Mac App Store。

Developer ID App

在 Mac App Store 以外分发 Mac App 前,对其进行签名。

Developer ID 安装器

对包含你已签名 App 的 Mac 安装器软件包进行签名并在 Mac App Store 之外分发。

Apple Pay

解密 Apple 向商家/开发者发送的 App 交易数据。

商家身份

向 Apple Pay 服务器验证你的身份。

Pass Type ID

对“钱包”内的凭证进行签名和发送凭证更新。

Swift 签名

用于 Swift Package Manager 版本 5.9 或更高版本。

对 Swift 软件包和软件包集合进行签名,以便分发。

VoIP 服务

在你的通知服务器与 APNs 之间建立连接,以向后台 VoIP App 通知有传入活动。

WatchKit 服务

在你的通知服务器与 APNs 之间建立连接,以更新 ClockKit 的复杂功能数据。

网站推送 ID

对网站更新进行签名和发送网站更新。

登录到账户后看到的创建新证书界面:

二、创建证书

        在 App 开发期间,对应不同的环境,你将创建不同的证书类型。iOS、Apple tvOS 和 watchOS App 使用同一套证书,而 macOS App 使用另一套证书。如果你使用的是 Xcode 11 或更高版本,则可以为所有平台创建统一的开发和分发证书。有了开发证书,你就可以在设备上运行你的 App 以及使用 App 功能;而有了分发证书,就可以分发你的 App 进行测试,并将 App 上传到 App Store Connect。

        开发证书属于个人。你总共可以创建两个 iOS 开发证书和两个 Mac 开发证书。在你的开发者账户中,电脑名称会追加到开发证书名称后面 (例如,Gita Kumar (Work Mac),其中 Work Mac 是电脑名称),便于你识别证书。

        分发证书属于团队,每个团队只能有一种类型的分发证书 (Developer ID 证书除外)。只有账户持有人或管理角色可以创建分发证书 (如果你以个人身份注册,你即为账户持有人)。

        可以使用 Xcode 或开发者账户创建和撤销证书。

在正式创建证书前,首先需要创建证书签名请求()certSigningRequest创建证书签名请求()。

1. 创建证书签名请求(本地电脑上): .certSigningRequest 文件

打开应用程序中的钥匙串

  1. 选取“钥匙串访问”>“证书助理”>“从证书颁发机构请求证书”。

  2. 在“证书助理”对话框中,在“用户电子邮件地址”栏位中输入电子邮件地址。

  3. 在“常用名称”栏位中,输入密钥的名称 (例如,Gita Kumar Dev Key)。

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

  5. 选取“存储到磁盘”,然后点按“继续”。

注意:

        用户电子邮件地址:就是注册苹果账户时的邮件地址。

Key文件存储在桌面,文件名称为:CertificateSigningRequest.certSigningRequest

2. 创建证书(在苹果开发者网站上操作)

选择Apple Development:

继续后,选择上一步生成的CertificateSigningRequest.certSigningRequest 文件(桌面上)。

依次可以创建开发和生产的证书,结果如下:

三、创建标识符(Identifiers)

App ID

App ID 是由两部分构成的字符串,在预置描述文件中用于标识来自某一开发团队的一个或多个 App。App ID 有两种类型:一种是精确 App ID (用于单个 App);另一种是通配符 App ID (用于一组 App)。

精确 App ID 包含套装 ID 的完整路径。通配符 App ID 包含一个星号,以作为相应套装 ID 搜索字符串的最后一个部分。注:需要指定精确 App ID,才能将你的 App 提交至 App Store 并使用特定服务。

        App ID 可识别预置描述文件中的 App。它是一个由两部分组成的字符串,用于标识来自某一开发团队的一个或多个 App。App ID 共有两类:适用于单个 App 的精确 App ID,以及适用于一组 App 的通配符 App ID。在一个 App ID 中启用的 App 功能将作为一个允许列表,为一个或多个 App 提供可用功能。你可以在创建 App ID 时启用 App 功能,也可以稍后修改这些设置。精确 App ID 将默认启用“App 内购买项目”功能。自 Xcode 11.4 起,可以使用同一 App ID 来构建 iOS、macOS、Apple tvOS 和 watchOS App。

1. 创建新的Identifiers

选择 APP IDs

选择App

完成后:

四、描述文件(Profiles)

        Profiles用于将 Certificates、Identifiers、Devices结合起来,形成一个描述证书、标识符的描述统一文件。

1. 创建一个开发描述文件

继续后:

选择上一步创建的标识符继续

选择前面创建好的证书继续

选择好需要连接的手机,继续

输入描述文件名称,然后生成

2. 创建一个生产(上架)描述文件

继续,操作方法和生成开发描述文件一致!

五、本地安装证书文件

将第一步创建证书中创建的证书文件下载到本地。将证书下载到 Mac,然后双击 .cer 文件安装到钥匙串访问中。确保将私钥和公钥的备份副本保存在安全的地方。

下载下来的文件按为:development.cer,双击 .cer 文件安装到钥匙串访问中。

安装时出现这样的错误 -25294:

经过查询资料发现需要安装Apple全球开发者关系认证中间证书WWDRCA*.cer。

Apple证书列表:Apple PKI - Apple

红色部分为我们需要的证书:

我们可以下载G3,有效期到2030-02-20。下载下来后点击安装。安装完成后在继续安装distribution.cer 和 development.cer 证书,最后安装成功

注意:

经过测试,下载G6时不可以的,G3是可以的,不知道为什么,这里注意下。

六、Xcode配置

1.  创建账号:

打开XCode(我的版本: 14.3.1),选择settings

然后选择增加账号:

2. 管理证书(Manage Certificates)

        选择admin 然后按下 Manage Certificates,可以管理(查看)证书,证书如果已经在苹果后台账号设置好,这里就会自动显示出来。

        

特别注意:

        如果后台已经设置好证书,而且上面已经显示有了,就不要在按做下脚的 + ,否则就会重复安装同一个证书,这样就会导致app签名失败。

        万一出现了上述情况,解决办法是:

1. 在苹果账号后台删除重复的证书;

2. 在本地钥匙串中删除重复的证书;

3. 重新打开xcode查看就正常了。

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

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

相关文章

Midjourney学习(一)prompt的基础

prompt目录 sd和mj的比较prompt组成风格表现风格时代描述表情色彩情绪环境 sd和mj的比较 自从去年9月份开始,sd就变得非常或火,跟它一起的还有一个midjourney。 他们就像是程序界的两种模式,sd是开源的,有更多的可能性更可控。但是…

c#多线程—基础概念到“双色球”项目实现(附知识点目录、代码、视频)

总结:视频中对于多线程讲的非常透彻,从线程基础概念—>.net不同版本出现的线程方法—>多线程常出现问题—>双色球项目实践,每个知识点都有代码实操,受益匪浅。附上学习笔记和实操代码。 视频 目录 一、线程、进程概念及优…

华为数通方向HCIP-DataCom H12-821题库(拖拽题,知识点总结)

以下是我在现有题库中整理的需要重点关注的考点内容,如有遗漏小伙伴可以留言补充。

Linux内核源码分析 (5)多处理器调度

Linux内核源码分析 (5)多处理器调度 文章目录 Linux内核源码分析 (5)多处理器调度注:本章节使用的内核版本为Linux 5.6.18一、 SMT和NUMA1、SMP (对称多处理器结构)2、NUMA (非一致内存访问结构) 二、多核调度三、调度域和调度组四、SMP调度详…

数据结构基本概念

一、数据 数据对象-数据元素-数据项(属性),前者由后者组成 二、数据结构 定义:按某种关系的数据元素的集合 三、数据类型 1、原子类型(例如整型) 2、结构类型(由原子类型组成,例如数组) 3、…

ReID网络:MGN网络(4) - Loss计算

1. MGN Loss MGN采用三元损失(Triplet Loss)。 三元损失主要用于ReID算法,目的是帮助网络学习到一个好的Embedding信息。之所以称之为三元损失,主要原因在于在训练中,参与计算Loss的分别有Anchor、Positive和Negative三方。 2. Triplet Lo…

力扣:82. 删除排序链表中的重复元素 II(Python3)

题目: 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - …

ChatGPT插件的优缺点

虽然西弗吉尼亚大学的研究人员看到了最新的官方ChatGPT插件——名为“代码解释器”( Code Interpreter)的教育应用潜力,但他们也发现,对于使用计算方法处理针对癌症和遗传疾病的定向治疗的生物数据的科学家来说,这款插…

[C/C++]指针详讲-让你不在害怕指针

个人主页:北海 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C/C🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!&#x1f9…

Java for循环每次都通过list.size()和 string.length()获取大小性能

有人说在for循环之前用一个局部变量先获取到list.size()、str.length(),然后在for循环的判断条件里通过这个局部变量替换list.size()、str.length()会节省数据计算的时间。事实真的是这样吗?下面就为大家解答这个问题。 说明:此文章针对Andro…

华为云云服务器评测|基于华为云云耀云服务器L实例开展性能评测,例如 MySQL、Clickhouse、Elasticsearch等等

在当今云计算时代,越来越多的企业和个人开始选择将应用部署在云服务器上,以便更好地满足高性能、可靠性和可扩展性等需求。而华为云云耀云服务器L实例不仅提供了高性能和可靠性的计算和存储资源,而且具有灵活和高效的成本控制,深受…

DDR2 IP核调试记录1

一、IP核生成不成功可能原因 1、打开 Quartus II 软件时,请右键选择以管理员方式运行,切记,否则可能导致 IP 生成不成功。 2、创建工程时不要将工程创建在和 Quartus II 安装目录相同的盘符下,否则可能导致生产 IP 失败。 3、如果…

Virtualenvwrapper 的安装教程

Virtualenvwrapper Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做: 将所有虚拟环境整合在一个目录下管理(新增,删除,复制)虚拟环境快速切换虚拟环境 安装方法 Li…

HTTP协议概述

HTTP 协议定义 HTTP协议,直译为超文本传输协议,是一种用于分布式、协作、超媒体的信息系统的应用协议。HTTP协议是万维网数据通信的基础。HTTP协议在客户端-服务器计算模型中充当请求-响应协议。客户端向服务器提交HTTP请求消息。服务器提供HTML文件和其…

SpringBoot项目在启动后自动关闭

问题描述: 今天搭建了一个SpringBoot项目,但是在启动之后就自行关闭了,就像下面这样: 原因分析:在创建SpringBoot项目的时候,Web的依赖没有导入,默认以普通java项目运行导致的终止。 解决方案…

CData Drivers for SAS xpt Crack

CData Drivers for SAS xpt Crack 使用基于标准的驱动程序,加入数据库、报告工具和自定义程序中的实时SAS xpt(XPORT)数据文件。 与BI分析、报告、ETL工具和自定义解决方案集成。 适用于SAS xpt的CData驱动程序。神奇的功能: BI和分析 我们的驱动程序是将…

aarch64-linux交叉编译libcurl带zlib和openssl

交叉编译libcurl需要依赖zlib和openssl 需要先用aarch64工具链编译zlib和openssl aarch64-linux环境搭建 下载工具链 gcc用于执行交叉编译 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnusysroot是交叉版本的库文件集合 sysroot-glibc-linaro-2.25-2019.12-aarch64-lin…

线性代数的学习和整理17:向量空间的基,自然基,基变换等(未完成)

目录 3 向量空间的基:矩阵的基础/轴 3.1 从颜色RGB说起 3.2 附属知识 3.3 什么样的向量可以做基? 3.4 基的分类 3.1.1 不同空间的基---向量组的数量可能不同 3.1.2 自然基 3.1.3 正交基 3.1.4 标准正交基 3.1.5 基和向量/矩阵 3.1.6 基变换 …

ClickHouse进阶(五):副本与分片-1-副本与分片

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 📌订阅…

2023年7月京东打印机行业品牌销售排行榜(京东运营数据分析)

鲸参谋监测的京东平台7月份打印机行业销售数据已出炉! 7月份,打印机市场呈现下滑趋势。根据鲸参谋平台的数据可知,当月京东平台打印机的销量为48万,环比下降约28%,同比下降约18%;销售额为4亿,环…