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

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

前言

在你最初接触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->Settings->Accounts->Manage Certificates,生成Apple Distribution Certificates证书。
  2. 在苹果开发者后台创建描述文件(Provisioning Profile)。
  3. 在Xcode中,打开Targets -> Signing & Capabilities,配置证书和描述文件。
  4. 在Xcode中,执行Product -> Archive,打包构建。
  5. 点击Distribute App,选择App Store Connect,继续点击Distribute。
  6. 等待Xcode编译打包和上传完成,生成ipa文件。
  7. 在App Store Connect,进行发布审核,或者使用TestFlight进行内测。

生成Apple Distribution Certificates证书

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

选择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:

选择Distribute App

点击右上角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打包过程中还有遇到其他问题吗,欢迎大家在评论区讨论学习。

相关推荐
iFlyCai2 小时前
Xcode 16 pod init失败的解决方案
ios·xcode·swift
郝晨妤11 小时前
HarmonyOS和OpenHarmony区别是什么?鸿蒙和安卓IOS的区别是什么?
android·ios·harmonyos·鸿蒙
Hgc5588866612 小时前
iOS 18.1,未公开的新功能
ios
CocoaKier13 小时前
苹果商店下载链接如何获取
ios·apple
zhlx283515 小时前
【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载
macos·ios·cocoa
XZHOUMIN1 天前
网易博客旧文----编译用于IOS的zlib版本
ios
爱吃香菇的小白菜1 天前
H5跳转App 判断App是否安装
前端·ios
二流小码农1 天前
鸿蒙开发:ForEach中为什么键值生成函数很重要
android·ios·harmonyos
hxx2212 天前
iOS swift开发--- 加载PDF文件并显示内容
ios·pdf·swift
B.-2 天前
在 Flutter 应用中调用后端接口的方法
android·flutter·http·ios·https