IOS Xcode证书配置和ipa打包流程(附详细图文教程)

news2024/11/18 23:40:19

IOS Xcode证书配置和ipa打包流程(附图文教程)

  • 前言
  • ipa文件简介
  • 证书文件简介
  • Provisioning Profile描述文件简介
  • 当前环境版本
  • Xcode证书配置和ipa打包流程
    • 生成Apple Distribution Certificates证书
    • 创建描述文件(Provisioning Profiles)
    • 证书和描述文件配置
    • 执行Archive打包
    • 选择distribution Options
    • 在App Store Connect,进行发布审核
    • 用TestFlight提交测试
  • 最后

前言

在你最初接触IOS APP开发的时候,你是否有个焦虑,在IOS APP开发完成后如何打包给测试人员使用或者提交到Apple Store呢?

最近笔者刚好也在接触IOS APP的开发以及发布,由于网上搜索到的文章很多是几年前的,而且资料也不全,所以只好自己摸索,一步一步操作到最后的成功上线,因此想把这个过程记录,以便不时之需。

如果你也是刚接触这块内容,不熟悉用Xcode如何生成证书文件、profile描述文件配置、ipa打包提测等,让我们带着这些困惑,本文章将用Xcode生成证书、配置描述文件和ipa打包做个总结,你将会看到具体的图文教程,另外,我也会将我遇到的问题以及解决办法放在文章的最后。通过这篇文章,我希望你能少走弯路快速上手。

下面,让我们进入正题!

ipa文件简介

ipa是IOS应用程序iPhoneApplication的缩写,简单来说,ipa文件本质上是一个zip压缩包,跟安卓apk文件性质是一样的,Xcode打包完成后的扩展名为 .ipa。

证书文件简介

苹果APP的证书文件是用于验证应用程序的身份和授权的文件。在开发和发布iOS应用程序时,需要使用苹果的证书文件来进行代码签名和身份验证,以确保应用程序的安全性和可靠性。

  • 代码签名:使用证书文件对应用程序进行签名,以确保应用程序的完整性和真实性,防止应用程序被篡改或者恶意攻击。
  • 授权:使用证书文件授权应用程序在特定设备上运行,以确保应用程序的合法性和授权性。
  • 发布:使用证书文件发布应用程序到App Store或者企业内部分发平台,以确保应用程序的合法性和可靠性。

Provisioning Profile描述文件简介

用于授权iOS设备和应用程序的文件。在开发和发布iOS应用程序时,需要使用Provisioning Profile文件来授权应用程序在特定设备上运行,以确保应用程序的合法性和授权性。

在这里插入图片描述

  • 授权设备:使用Provisioning Profile文件授权特定设备运行应用程序,以确保应用程序的合法性和授权性。
  • 授权应用程序:使用Provisioning Profile文件授权应用程序在特定设备上运行,以确保应用程序的合法性和授权性。
  • 代码签名:使用Provisioning Profile文件对应用程序进行代码签名,以确保应用程序的完整性和真实性,防止应用程序被篡改或者恶意攻击。

当前环境版本

笔者当前使用的环境如下:

电脑:MacBook Pro 2019 款
系统版本:macOS Sonoma 14.4.1
Xcode 版本:15.3

Xcode证书配置和ipa打包流程

简单来说,分以下几步:

  1. 在Xcode中打开项目,选择Xcode->Preferences->Accounts->Manage Certificates,生成Apple Distribution Certificates证书。
  2. 在苹果开发者后台创建描述文件(Provisioning Profile)。
  3. 在Xcode中,打开Targets -> Signing & Capabilities,进行证书和描述文件配置。
  4. 在Xcode中,执行Product -> Archive,打包构建。
  5. 选择需要的Export Options,例如Development或者Distribution。
  6. 选择需要的证书和Provisioning Profile,并选择Export。
  7. 等待Xcode编译打包和上传完成,生成ipa文件。
  8. 在App Store Connect,进行发布审核,或者使用TestFlight进行内测。

生成Apple Distribution Certificates证书

首先在Xcode中打开IOS项目,选择菜单栏Xcode->Preferences:

在这里插入图片描述

选择Accounts选项卡:
在这里插入图片描述

在右下角点击Manage Certificates…,会打开:

在这里插入图片描述
如果你没有显示对应的Apple Distribution Certificates文件,请在左下角点击+新增,选择Apple Distribubtion。
几秒中会自动生成证书文件如上图红方框。这一步之后 Xcode 会自动同步该证书到 App 管理后台上,查看地址:https://developer.apple.com/account/resources/certificates/list

你也可以通过检查系统钥匙串是否已正确生成:

在这里插入图片描述

到这里,你已成功生成发布证书。

如果你有其他的证书用途,你也可以点击这个证书导出为p12格式的文件(如云打包或者用其他电脑上架App):

在这里插入图片描述

重点: 一般一个开发者帐号创建一个发布证书就够了,如果以后需要在其他电脑上上架App,只需要在钥匙串访问中创建p12文件,把p12文件安装到其他电脑上,这相当于给予了其他电脑发布App的权限。

创建描述文件(Provisioning Profiles)

登录苹果开发者官网,然后点击进入描述文件:

在这里插入图片描述

选择Profiles选项,点击+新增:

在这里插入图片描述

选择相应的用途,描述文件分为开发和发布,这里我们选择App Store为例(如果你打算上架应用或者在TestFlight测试):

在这里插入图片描述

选择之后点击Continue:

在这里插入图片描述
选者App ID之后,继续点击Continue:

在这里插入图片描述

这个证书就是你刚Xcode上生成证书这一步骤生成的文件,然后继续点Continue:

在这里插入图片描述

在Provisioning Profile Name输入框输入你想命名的profile描述文件名称(自己定义),输入之后,点击Generate。至此,你已成功创建Provisioning Profiles描述文件。

在这里插入图片描述

返回到Profiles列表页面,找到你刚命名的创建profile文件,点击Download,下载到本地。

证书和描述文件配置

回到IOS项目中的Targets(双击打开如图aiyunhua目录),选择Signing & Capabilities选项卡,点击Provisioning Profiles,Import导入你刚下载到本地的profile文件:

在这里插入图片描述

导入后,切换到Build Settings选项卡查看Signing是否已配置成功(下面没有错误提示就是成功):

  • 成功:
    在这里插入图片描述
  • 失败:
    在这里插入图片描述
    失败原因:Provisioning profile “provision_profile_app_store” has app ID “com.linshang.app”, which does not match the bundle ID “com.linshang”.意思是APP ID没匹配。
    解决办法:将上面的Bundle Identifier的值由提示中的com.linshang改为com.linshang.app。

至此,你也完成证书和描述文件的配置。

执行Archive打包

在开始打包之前,首先编辑Scheme:

在这里插入图片描述

选择Run选项卡,Info -> Build Configuration,如果你想生产打包提交到Apple Store,下拉选择Release,选完之后点close:

在这里插入图片描述
在Xcode中打开菜单栏Product->Archive:

选择distribution Options

在这里插入图片描述

点击右上角Distribubte App,根据需要进行选择,这里选择App Store Connect,点击Distribute:
在这里插入图片描述
等待十几秒…
在这里插入图片描述
发现报错了…仔细阅读下面红色框框中的信息,你会发现,问题出在一个叫做CFBundleIconName的字段,就是说,需要在Info.plist文件中,添加一个该字段,添加完成后,默认显示的名字是Icon Name,该字段是一个String的字段,value值为空。如下图所示:

在这里插入图片描述

下面来解决问题:

双击项目aiyunhua,点击 info,在Custom IOS Target Properties中,点击 + 号,添加Icon Name属性key,属性值value为:AppIcon。
在这里插入图片描述
在这里插入图片描述
下面说这个AppIcon的问题,注意,是i的大写,不是L的小写。这个表示的是应用的图标。从苹果发回来的邮件可以看得出来,大概是从iOS11以后,应用的图标就要配置在这个AppIcon里面,而这个是什么呢?做iOS开发的可能更加了解一些,就是Assets.xcassets下面的那个AppIcon,如图所示:

在这里插入图片描述

双击虚线区域进行上传图片,注意图片需要是1024*1024px。

在这里插入图片描述
继续 Distribute,等待Xcode编译打包和上传完成,生成ipa文件,出现如下图的uploaded,就是成功了:

在这里插入图片描述
恭喜你到这一步,app已经成功打包成ipa并且成功上传到App Store Connect,可点击查看。

在App Store Connect,进行发布审核

在这里插入图片描述

用TestFlight提交测试

阅读到这里,你将学会如何用TestFlight测试你开发完成的App,切换到TestFlight选项卡,填写测试信息:

  1. 新建测试群组;
    在这里插入图片描述

  2. 添加测试成员;
    在这里插入图片描述

  3. 添加之后,系统会自动发邮件通知测试人员进行验证测试,打开邮箱上的通知链接;

  4. 兑换码 复制粘贴到TestFlight App上进行兑换即可进行测试。

最后

希望这篇文章能够帮助到大家。你在IOS打包过程中还有遇到其他问题吗,欢迎大家在评论区讨论学习。

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

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

相关文章

【python】模块与包

Python中的模块和包是组织和管理代码的重要工具。通过模块和包,你可以更好地管理和重用你的代码,使得代码更加模块化和可维护。 目录 前言 正文 一、模块 1、模块的分类 1)内置模块 python解释器中默认拥有的模块可以直接使用(…

守护数字疆域:2024年网络安全报告深度解读

在这个数据如潮涌动的数字时代,每一比特信息都可能是攻防双方角力的战场。《Check Point 2024年网络安全报告》不但为我们揭示了过去一年网络安全世界的风云变幻,更以前瞻性的视角勾勒出未来的挑战与机遇。此刻,让我们携手深潜这份权威指南的…

Offer必备算法37_记忆化搜索_五道力扣题详解(由易到难)

目录 记忆化搜索概念和使用场景 ①力扣509. 斐波那契数 解析代码1_循环 解析代码2_暴搜递归 解析代码3_记忆化搜索 解析代码4_动态规划 ②力扣62. 不同路径 解析代码1_暴搜递归(超时) 解析代码2_记忆化搜索 解析代码3_动态规划 ③力扣300. 最…

对时间序列异常检测的严格评价

论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/20680 论文源码:无 会议:The Thirty-Sixth AAAI Conference on Artificial Intelligence 这篇论文名为《Towards a Rigorous Evaluation of Time-Series Anomaly Detection》&a…

Java毕设之基于SpringBoot的在线拍卖系统

运行环境 开发语言:java 框架:springboot,vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7,8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) 系统详细设计 管理员功能模块 管理员登录,管理员通过输入用户名、密码、角色等信…

网络新手如何上手水牛社软件?我的建议与看法

水牛社是一款专为电脑用户设计的软件,拥有明确的著作权,其核心功能在于发布和整合各类网络活动任务资源、教程等,内容多元且不设固定分类。其靠谱程度取决于你对软件的了解程度和个人需求的适配性。 软件内部包含五个主要栏目,大…

前端开发攻略---打破Chrome的最小字号限制,设置任意字号大小

目录 1、原因 2、解决方法 1、原因 由于Chrome浏览器的限制,在网页中的字号默认最小为12px,更改为12px以下的字号大小是无效的 2、解决方法 1、在Chrome浏览器中调整字号最小值 优点:快,方便, 缺点:只对自…

【C++】详解STL容器之一的deque和适配器stack,queue

目录 deque的概述 deque空间的结构 deque的迭代器 deque的数据设计 deque的优缺点 适配器的概念 ​编辑 stack的概述 stack的模拟实现 queue的概述 queue的模拟实现 deque的概述 deque的设计参考了另外两大容器vector和list。可参考下面两篇文章 详解vector&#x…

python:画折线图

import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties# 设置新宋体字体的路径 font_path D:/reportlab/simsun/simsun.ttf# 加载新宋体字体 prop FontProperties(fnamefont_path)""" # 读取 xlsx 文件 d…

API低代码平台介绍2-最基本的数据查询功能

最基本的数据查询功能 本篇文章我们将介绍如何使用ADI平台定义一个基本的数据查询接口。由于是介绍平台具体功能的第一篇文章,里面会涉及比较多的概念介绍,了解了这些概念有助于您阅读后续的文章。 ADI平台的首页面如下: 1.菜单介绍 1.1 O…

交友软件源码-源码+搭建+售后,上线即可运营聊天交友源码 专业语聊交友app开发+源码搭建-快速上线

交友小程序源码是一种可以帮助开发者快速搭建交友类小程序的代码模板。它通常包括用户注册、登录、个人信息编辑、匹配推荐、好友聊天等常见功能,以及与后台数据交互的接口。使用这种源码可以极大地缩短开发时间,同时也可以根据自己的需求进行二次开发和…

代码随想录算法训练营DAY45|C++动态规划Part7|70.爬楼梯(进阶版)、322. 零钱兑换、279.完全平方数

文章目录 70.爬楼梯(进阶版)⭐️322. 零钱兑换思路CPP代码总结 279.完全平方数思路CPP代码 70.爬楼梯(进阶版) 卡码网:57. 爬楼梯 文章讲解:70.爬楼梯(进阶版) 本题就是典型了完全背包排列问题,…

光峰科技2023年营收、净利润均双位数下滑,新一年延续?

近日,深圳光峰科技股份有限公司(688007.SH,下称“光峰科技”)对外公布了2023年和2024年一季度的经营“成绩单”。 透视财报不难看出,虽然光峰科技在降低成本、提振销售等层面下足了功夫,但受制于市场需求式…

交易复盘-20240509

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 百合花 (4)|[9:25]|[17717万]|1.93 时代万恒…

【SpringBoot记录】自动配置原理(1):依赖管理

前言 我们都知道SpringBoot能快速创建Spring应用,其核心优势就在于自动配置功能,它通过一系列的约定和内置的配置来减少开发者手动配置的工作。下面通过最简单的案例分析SpringBoot的功能特性,了解自动配置原理。 SpringBoot简单案例 根据S…

5.9gunplot绘图堆叠柱状图

gunplot绘图堆叠柱状图 plot"要用的数据(后缀名是.dat)" using 2 t(或者title) 跟着是要命名的属性名称 这个名称可以用.dat里的每列列名,也可以直接在后面跟着定义 plot "data.dat" using 2 t columnheader(2), using 3 t column…

【websocket-客户端可视化工具】

postman 新版postman (版本v11以上) ,除了http协议,还支持了Websocket,MQTT,gRPC等多种连接协议,可以作为多种协议的客户端,使用起来非常方便。 使用 服务端代码 这里以websocket协议举例,代…

2023-2024年家电行业报告合集(精选51份)

家电行业报告/方案(精选51份) 2023-2024年 报告来源:2023-2024年家电行业报告合集(精选51份) 【以下是资料目录】 空气炸锅出海品牌策划创意全案【家电出海】【品牌全案】 卡萨帝潮流消费品生活家电音乐节活动方案…

【Python】了解卡方检验方法及其应用

是否幸福轻得太沉重 过度使用不痒不痛 烂熟透红空洞了的瞳孔 终于掏空终于有始无终 得不到的永远在骚动 被偏爱的都有恃无恐 玫瑰的红容易受伤的梦 握在手中却流失于指缝 又落空 🎵 陈奕迅《红玫瑰》 卡方检验(Chi-square test&…

大数据手册(Spark)--Spark 简介

Spark 简介 Apache Spark 是一种用于大数据工作负载的分布式开源处理系统。它使用内存中缓存和优化的查询执行方式,可针对任何规模的数据进行快速分析查询。Apache Spark 提供了简明、一致的 Java、Scala、Python 和 R 应用程序编程接口 (API)。 Apache Spark 是专…