跳至主要內容

Ios

SunSeekerX大约 19 分钟

Ios

信息

开发者官网:https://developer.apple.com/account/open in new window

xcode

历史版本下载

https://developer.apple.com/download/all/open in new window

ios 系统版本发布时间

VersionBuild No.ArchitectureLast UpdateEnd Of Life
1.1.44A10232-bit ARM26 Feb 2008N/A
2.2.15H1132-bit ARM27 Jan 2009N/A
3.1.37E1832-bit ARM02 Feb 2010iPhone 1st Gen iPod 1st Gen
4.3.58L132-bit ARM25 July 2011iPhone 3G iPod 2nd Gen
5.1.19B20632-bit ARM07 May 2012iPad 1st Gen iPod 3rd Gen
6.1.610B50032-bit ARM21 Feb 2014iPhone 3GS iPod 4th Gen
7.1.211D25732/64-bit ARM30 Jun 2014iPhone 4
8.4.112H32132/64-bit ARM13 Aug 2015N/A
9.3.513G3632/64-bit ARM25 Aug 2016iPad 2, 3rd, Mini (WiFi) iPod 5th
9.3.613G3732/64-bit ARM22 July 2019iPhone 4S iPad Mini (Wi-Fi + Cellular)
10.3.314G6032/64-bit ARM19 July 2017iPhone 5C iPad 4th Gen (WiFi)
10.3.414G6132/64-bit ARM22 July 2019iPhone 5 iPad 4th Gen (WiFi+ Cellular)
11.4.115G7764-bit ARM09 July 2018N/A
12.5.616H7164-bit ARM31 Aug 2022iPhone 5S, 6/6 Plus iPad Mini 2, Mini 3, Air 1st iPod 6th Gen
13.717H3564-bit ARM01 Sep 2020iPad Air 2nd, Mini 4
14.8.118H10764-bit ARM26 Oct 2021N/A
15.719H1264-bit ARM12 Sep 2022iPhone 6S, 7, SE iPad Air 2, Mini 4 iPod 7th
16.020A36264-bit ARM12 Sep 2022N/A
16.0.1 (iPhone 14)20A37164-bit ARM15 Sep 2022N/A
16.1 Beta 120B5045d64-bit ARM14 Sep 2022N/A

来源: https://www.gkgigs.com/list-apple-ios-version-history/open in new window

Xcode 最低要求和支持的 SDK

Xcode 版本要求的最低 OS 版本SDK架构部署目标模拟器Swift
Xcode 14macOS Monterey 12.5iOS 16 macOS 12.3 tvOS 16 watchOS 9 DriverKit 22i386 x86_64 armv7k arm64 arm64e arm64_32iOS 11-16 iPadOS 13-16 macOS 10.13-12.5 tvOS 9-16 watchOS 4-9 DriverKit 19-22iOS 12.4-16 tvOS 12.4-16 watchOS 7-9Swift 4 Swift 4.2 Swift 5.7
Xcode 13.4macOS Monterey 12iOS 15.5 macOS 12.3 Apple tvOS 15.4 watchOS 8.5 DriverKit 21.4i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-15.5 iPadOS 13-15.5 macOS 10.9-12.3 Apple tvOS 9-15.4 watchOS 2-8.5 DriverKit 19-21.4iOS 12.4-15.5 Apple tvOS 12.4-15.4 watchOS 7-8.5Swift 4 Swift 4.2 Swift 5.6
Xcode 13.3macOS Monterey 12iOS 15.4 macOS 12.3 Apple tvOS 15.4 watchOS 8.5 DriverKit 21.4i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-15.4 iPadOS 13-15.4 macOS 10.9-12.3 Apple tvOS 9-15.4 watchOS 2-8.5 DriverKit 19-21.4iOS 12.4-15.4 Apple tvOS 12.4-15.4 watchOS 7-8.5Swift 4 Swift 4.2 Swift 5.6
Xcode 13.2macOS Big Sur 11.3iOS 15.2 macOS 12.1 Apple tvOS 15.2 watchOS 8.3 DriverKit 21.2i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-15.2 iPadOS 13-15.2 macOS 10.9-12.2 Apple tvOS 9-15.2 watchOS 2-8.3 DriverKit 19-21.2iOS 10.3.1-15.2 Apple tvOS 10.2-15.2 watchOS 3.2-8.3Swift 4 Swift 4.2 Swift 5.5
Xcode 13.1macOS Big Sur 11.3iOS 15 macOS 12 Apple tvOS 15 watchOS 8 DriverKit 21.0.1i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-15 iPadOS 13-15 macOS 10.9-12 Apple tvOS 9-15 watchOS 2-8 DriverKit 19-21.0.1iOS 10.3.1-15 Apple tvOS 10.2-15 watchOS 3.2-8Swift 4 Swift 4.2 Swift 5.5
Xcode 13macOS Big Sur 11.3iOS 15 macOS 11.3 Apple tvOS 15 watchOS 8 DriverKit 20.4i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-15 iPadOS 13-15 macOS 10.9-11.3 Apple tvOS 9-15 watchOS 2-8 DriverKit 19-20.4iOS 10.3.1-15 Apple tvOS 10.2-15 watchOS 3.2-8Swift 4 Swift 4.2 Swift 5.5
Xcode 12.5.1macOS Big Sur 11iOS 14.5 macOS 11.3 Apple tvOS 14.5 watchOS 7.4 DriverKit 20.4i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-14.7 iPadOS 13-14.7 macOS 10.9-11.5 Apple tvOS 9-14.7 watchOS 2-7.6 DriverKit 19-20.4iOS 10.3.1-14.5 Apple tvOS 10.2-14.5 watchOS 3.2-7.4Swift 4 Swift 4.2 Swift 5.4
Xcode 12.5macOS Big Sur 11iOS 14.5 macOS 11.3 Apple tvOS 14.5 watchOS 7.4 DriverKit 20.4i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-14.6 iPadOS 13-14.6 macOS 10.9-11.4 Apple tvOS 9-14.6 watchOS 2-7.5 DriverKit 19-20.4iOS 10.3.1-14.5 Apple tvOS 10.2-14.5 watchOS 3.2-7.4Swift 4 Swift 4.2 Swift 5.4
Xcode 12.4macOS Catalina 10.15.4 (搭载 Intel 芯片的 Mac) macOS Big Sur 11 (搭载 Apple 芯片的 Mac)iOS 14.4 macOS 11.1 Apple tvOS 14.3 watchOS 7.2 DriverKit 20.2i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-14.4 iPadOS 13-14.4 macOS 10.9-11.1 Apple tvOS 9-14.3 watchOS 2-7.2 DriverKit 19-20.2iOS 10.3.1-14.4 Apple tvOS 10.2-14.3 watchOS 3.2-7.2Swift 4 Swift 4.2 Swift 5.3
Xcode 12.3macOS Catalina 10.15.4 (搭载 Intel 芯片的 Mac) macOS Big Sur 11 (搭载 Apple 芯片的 Mac)iOS 14.3 macOS 11.1 Apple tvOS 14.3 watchOS 7.2 DriverKit 20.2i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-14.3 iPadOS 13-14.3 macOS 10.9-11.1 Apple tvOS 9-14.3 watchOS 2-7.2 DriverKit 19-20.2iOS 10.3.1-14.3 Apple tvOS 10.2-14.3 watchOS 3.2-7.2Swift 4 Swift 4.2 Swift 5.3
Xcode 12.2macOS Catalina 10.15.4 (搭载 Intel 芯片的 Mac) macOS Big Sur 11 (搭载 Apple 芯片的 Mac)iOS 14.2 macOS 11 Apple tvOS 14.2 watchOS 7.1 DriverKit 20i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-14.2 iPadOS 13-14.2 macOS 10.9-11 Apple tvOS 9-14.2 watchOS 2-7.1 DriverKit 19-20iOS 10.3.1-14.2 Apple tvOS 10.2-14.2 watchOS 3.2-7.1Swift 4 Swift 4.2 Swift 5.3
Xcode 12.1macOS Catalina 10.15.4 (搭载 Intel 芯片的 Mac) macOS Big Sur 11 (搭载 Apple 芯片的 Mac)iOS 14.1 macOS 10.15.6 Apple tvOS 14 watchOS 7 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-14.1 iPadOS 13-14.1 macOS 10.9-11 Apple tvOS 9-14 watchOS 2-7 DriverKit 19iOS 10.3.1-14.1 Apple tvOS 10.2-14 watchOS 2-7Swift 4 Swift 4.2 Swift 5.3
Xcode 12macOS Catalina 10.15.4 (基于 Intel 的 Mac)iOS 14 macOS 10.15.6 Apple tvOS 14 watchOS 7 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 9-14 iPadOS 13-14 macOS 10.6-10.15.6 Apple tvOS 9-14 watchOS 2-7 DriverKit 19iOS 10.3.1-14 Apple tvOS 10.2-14 watchOS 3.2-7Swift 4 Swift 4.2 Swift 5.3
Xcode 11.7macOS Catalina 10.15.2iOS 13.7 macOS 10.15.6 Apple tvOS 13.4 watchOS 6.2 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-13.7 iPadOS 13-13.7 macOS 10.6-10.15.6 Apple tvOS 9-13.4 watchOS 2-6.2 DriverKit 19iOS 10.3.1-13.7 Apple tvOS 10.2-13.4 watchOS 3.2-6.2Swift 4 Swift 4.2 Swift 5.2
Xcode 11.6macOS Catalina 10.15.2iOS 13.6 macOS 10.15.6 Apple tvOS 13.4 watchOS 6.2 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-13.6 iPadOS 13-13.6 macOS 10.6-10.5.6 Apple tvOS 9-13.4 watchOS 2-6.2 DriverKit 19iOS 10.3.1-13.6 Apple tvOS 10.2-13.4 watchOS 3.2-6.2Swift 4 Swift 4.2 Swift 5.2
Xcode 11.5macOS Catalina 10.15.2iOS 13.5 macOS 10.15.4 Apple tvOS 13.4 watchOS 6.2 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-13.5 iPadOS 13-13.5 macOS 10.6-10.15.4 Apple tvOS 9-13.4 watchOS 2-6.2 DriverKit 19iOS 10.3.1-13.5 Apple tvOS 10.2-13.4 watchOS 3.2-6.2Swift 4 Swift 4.2 Swift 5.2
Xcode 11.4.xmacOS Catalina 10.15.2iOS 13.4 macOS 10.15.4 Apple tvOS 13.4 watchOS 6.2 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-13.4.x iPadOS 13-13.4.x macOS 10.6-10.15.4 Apple tvOS 9-13.4 watchOS 2-6.2 DriverKit 19iOS 10.3.1-13.4.x Apple tvOS 10.2-13.4 watchOS 3.2-6.2Swift 4 Swift 4.2 Swift 5.2
Xcode 11.3.xmacOS Mojave 10.14.4iOS 13.3 macOS 10.15.2 Apple tvOS 13.3 watchOS 6.1.1 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-13.3 iPadOS 13-13.3 macOS 10.6-10.15.2 Apple tvOS 9-13.3 watchOS 2-6.1.1 DriverKit 19iOS 10.3.1-13.3 Apple tvOS 10.2-13.3 watchOS 3.2-6.1.1Swift 4 Swift 4.2 Swift 5.1
Xcode 11.2.xmacOS Mojave 10.14.4iOS 13.2 macOS 10.15.1 Apple tvOS 13.2 watchOS 6.1 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-13.2.x iPadOS 13-13.2.x macOS 10.6-10.15.1 Apple tvOS 9-13.2 watchOS 2-6.1 DriverKit 19iOS 10.3.1-13.2.x Apple tvOS 10.2-13.2 watchOS 3.2-6.1Swift 4 Swift 4.2 Swift 5.1
Xcode 11.1macOS Mojave 10.14.4iOS 13.1 macOS 10.15 Apple tvOS 13 watchOS 6 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-13.1 iPadOS 13-13.1 macOS 10.6-10.15 Apple tvOS 9-13 watchOS 2-6 DriverKit 19iOS 10.3.1-13.1 Apple tvOS 10.2-13 watchOS 3.2-6Swift 4 Swift 4.2 Swift 5.1
Xcode 11macOS Mojave 10.14.4iOS 13 macOS 10.15 Apple tvOS 13 watchOS 6 DriverKit 19i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-13 iPadOS 13 macOS 10.6-10.15 Apple tvOS 9-13 watchOS 2-6 DriverKit 19iOS 10.3.1-13 Apple tvOS 10.2-13 watchOS 3.2-6Swift 4 Swift 4.2 Swift 5.1
Xcode 10.3macOS Mojave 10.14.3iOS 12.4 macOS 10.14.6 Apple tvOS 12.4 watchOS 5.3i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-12.4 macOS 10.6-10.14.6 Apple tvOS 9-12.4 watchOS 2-5.3iOS 10.3.1-12.4 Apple tvOS 10.2-12.4 watchOS 3.2-5.3Swift 4 Swift 4.2 Swift 5
Xcode 10.2.xmacOS Mojave 10.14.3iOS 12.2 macOS 10.14.4 Apple tvOS 12.2 watchOS 5.2i386 x86_64 armv7 armv7s armv7k arm64 arm64e arm64_32iOS 8-12.2 macOS 10.6-10.14.4 Apple tvOS 9-12.2 watchOS 2-5.2iOS 8.1-12.2 Apple tvOS 9-12.2 watchOS 2-5.2Swift 4 Swift 4.2 Swift 5

来源: https://developer.apple.com/cn/support/xcode/open in new window

格式化 json 文件

暂时未发现方法。

解决方法:在 vscode 导入 ios 工程,在 vscode 格式化完成然后在 xcode 改

Clang-Format 统一 Xcode 代码格式化规范

原文: https://devfutao.com/archives/265/open in new window

安装步骤:

1、安装 clang-format

brew install clang-format

查看是否安装成功

clang-format --version

2、添加自动化服务

1.png
1.png

选择快速操作

2.png
2.png

将 shell 拖拽到右侧

3.png
3.png

添加内容并勾选,保存并命名为CodeFormat

4.png
4.png
export PATH=/usr/local/bin:$PATH
clang-format

查看文件保存的位置:

open ~/Library/Services

3、创建 .clang-format 文件并放到根目录

创建 .clang-format 文件:

touch .clang-format

.clang-format 文件内容:

# 工具 https://github.com/mapbox/XcodeClangFormat(需要添加签名使用)
# 函数名详细地址 英文 http://clang.llvm.org/docs/ClangFormatStyleOptions.html
# 函数名详细地址 中文 https://www.cnblogs.com/PaulpauL/p/5929753.html

# OC语言
Language: ObjC

# 基于LLVM格式
# BasedOnStyle: LLVM

# 对齐注释
AlignTrailingComments: true

# 指针和引用的对齐方式
PointerAlignment: Right

# 用于缩进的列数
IndentWidth: 4

# 针对OC的block的缩进宽度
ObjCBlockIndentWidth: 4

# OC的block嵌套参数不换行
ObjCBreakBeforeNestedBlockParam: false

# switch的case缩进
IndentCaseLabels: true

# OC里面,在@property后加空格
ObjCSpaceAfterProperty: false

# 括号中的(),{},[]代码对齐方式
AlignAfterOpenBracket: Align

#ContinuationIndentWidth: 0

# 赋值=对齐
AlignConsecutiveAssignments: false

# 声明参数对齐
AlignConsecutiveDeclarations: false

# 运算符位置
BreakBeforeBinaryOperators: None

# 如果为真(true), 三元运算符将被放置在换行后
BreakBeforeTernaryOperators: false

# 总是在逗号和对齐逗号跟冒号前把构造函数初始化式换行
BreakConstructorInitializersBeforeComma: false

# 允许短的函数放在同一行
#AllowShortFunctionsOnASingleLine: None

# 允许case在同一行
AllowShortCaseLabelsOnASingleLine: false

# OC里面,在Protocol前后加空格
ObjCSpaceBeforeProtocolList: true

# 单行注释前的空格数
SpacesBeforeTrailingComments: 1

# 连续的空行保留几行
MaxEmptyLinesToKeep: 1

# 保留block里面的空行
KeepEmptyLinesAtTheStartOfBlocks: false

# 每行字符的限制,0表示没有限制
ColumnLimit: 0

# []中添加空格
SpacesInSquareBrackets: false

# ()中添加空格
SpacesInParentheses : false

# @[]里面两边空格,默认true
SpacesInContainerLiterals: false

# 赋值运算符前加空格
SpaceBeforeAssignmentOperators: true

# 在空括号中加空格
SpaceInEmptyParentheses: false

# 在<>中间插入空格
SpacesInAngles: false

# 换行的时候对齐操作符
AlignOperands: true

# 允许if在同一行
AllowShortIfStatementsOnASingleLine: true

# 允许while在同一行
AllowShortLoopsOnASingleLine: false

# 允许将简单的语句块放到同一行
AllowShortBlocksOnASingleLine: true

# 缩进函数名
IndentWrappedFunctionNames: false

# 形参 如果为false要么都在同一行,要么各有一行
BinPackParameters: false

# 实参 如果为false要么都在同一行,要么各有一行
BinPackArguments: false

# 大括号换行
BreakBeforeBraces: Custom
BraceWrapping:
  # class定义后面
  AfterClass: true
  # 控制语句后面
  AfterControlStatement: false
  # enum定义后面
  AfterEnum: false
  # 函数定义后面
  AfterFunction: false
  # 命名空间定义后面
  AfterNamespace: false
  # struct定义后面
  AfterStruct: false
  # union定义后面
  AfterUnion: false
  # catch之前
  BeforeCatch: false

打开根目录

open ~

4、设置快捷键:系统偏好->键盘->快捷键->app 快捷键->选择 Xcode->设置快捷键按钮快捷键按钮建议设置: control+A ,系统格式化快捷键为: control+I 方便记忆

5.png
5.png

5、查看效果:

快捷键按钮方式:重新打开 Xcode->选中需要格式化的代码->按下之前设置的快捷键按钮手动选择方式:选中需要格式化的代码->右键->Services->CodeFormat check.png

可能出现的问题

1、clang-format, bash 命令未找到

需要修改 bash_profile 文件,添加运行路径。具体为 vim ~/.bash_profile, 在文件内添加 clang-format 存放路径,保存后退出。 source ~/.bash_profile

2、Swift 代码没法格式化

用来格式化 Swift 代码的命令行工具是 SwiftFormat,安装教程:Swift 代码自动格式化open in new window

TODO:

NS_OPTIONS类型的枚举不符合预期,目前是手动调整,不知道有没有可以直接配 .clang-format的方案。

预期效果:

typedef NS_OPTIONS(NSUInteger, UIBorderSideType) {
    UIBorderSideTypeAll    = 0,
    UIBorderSideTypeTop    = 1 << 0,
    UIBorderSideTypeLeft   = 1 << 1,
    UIBorderSideTypeRight  = 1 << 2,
    UIBorderSideTypeBottom = 1 << 3,
};

实际效果:

typedef NS_OPTIONS(NSUInteger, UIBorderSideType) {
    UIBorderSideTypeAll = 0,
    UIBorderSideTypeTop = 1 << 0,
    UIBorderSideTypeLeft = 1 << 1,
    UIBorderSideTypeRight = 1 << 2,
    UIBorderSideTypeBottom = 1 << 3,
};

参考:

Xcode 代码格式化 .clang-format 配置与使用_CCSH 的博客-CSDN 博客_xcode 代码格式化open in new window

clang format 官方文档自定义参数介绍(中英文) - PaulpauL - 博客园open in new window

Clang Format 在 Mac 上的安装与使用 - 掘金open in new window

移除 Xcode 安装 APP 产生的缓存文件

只要重新运行 Xcode 就一定会重新生成,而且会随着运行程序的增多,占用空间会越来越大。删除后在重新运行程序可能会稍微慢一点,建议定期清理。

  1. Cmd + Shift + Kshift + cmd + alt + k 进行清理,然后退出 Xcode。
  2. 删除缓存 rm -rf ~/Library/Developer/Xcode/DerivedData 在终端中运行
  3. 打开项目,re-build

移除 APP 打包的 ipa 历史版本

删除后不可恢复,文件夹是按照日期排列的,所以如果你不想全部删除,就只保留最新的几个版本就好了,个人建议全部删除。

~/Library/Developer/Xcode/Archives

移除模拟器的缓存数据

模拟器的相关数据。每个版本的模拟器占用的内存空间大约为 10M 左右。每个文件夹里包含的就是一个特定系统版本的设备的数据。每个文件夹对应哪个设备可以在其下 device.plist 中查看。删除之后,如果立即运行程序会报错,先关闭 Xcode,再重新打开程序,运行即可。运行该路径下会立马生成模拟器对应版本的文件。

~/Library/Developer/CoreSimulator/Devices/

移除对旧设备的支持

一般是占用内存空间最大的文件夹,即使全部删,再连接设备调试时,会重新自动生成。一般 iOS 只向下兼容两个版本就可以了,所以我移除了 9.0 以下的所有版本。

~/Library/Developer/Xcode/iOS DeviceSupport

移除 Xcode 中的无效的插件

因为之前你可能安装了一些 Xcode 的插件,比如 HighlightSelectedString、VVDocumenter-Xcode 等非常方便好用的第三方插件,在 Xcode 升级到 version 8.0 以后,就失效了,Xcode 在内部已经集成了类似的方法,所以之前安装的也都没有用了,但是还在原来的位置占用着内存空间,建议删除。

~/Library/Application Support/Developer/Shared/Xcode/Plug-ins

移除旧版本的模拟器支持

如果你不小心安装了很多个版本的模拟器,那么你可以删除一些旧版本的。但是当你需要旧版本的模拟器时,就需要重新下载了。建议留下 1~2 个版本就好了,其余的都删了吧。

~/Library/Developer/CoreSimulator/Profiles/Runtimes/

移除 playground 的项目缓存

删除后可重新生成,可以全部删除。再次运行程序会缓存。

~/Library/Developer/XCPGDevices/

移除旧的文档

删除后不可恢复,该目录下存储的为开发文档,一般有三个文件 com.apple.adc.documentation.iOS.docset(1.68GB)、com.apple.adc.documentation.OSX.docset(2.62GB)和 com.apple.adc.documentation.Xcode.docset(256.4M),如果你只做 iOS 开发,其实你可以把 OSX.docset 删除掉的,因为它占用了 2.62GB 的内存。

~/Library/Developer/Shared/Documentation/DocSets

移除模拟器中的 SDK 版本

不可恢复,操作请慎重。我个人的此路径下的只有最新版本的 sdk,除非当你有多个版本的 sdk 再酌情删除。

~/application/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

iOS 证书(.p12)和描述文件(.mobileprovision)申请

原文: https://ask.dcloud.net.cn/article/152open in new window

iOS 有两种证书和描述文件:

证书类型使用场景
开发(Development)证书和描述文件用于开发测试,在 HBuilderX 中打包后可在真机环境通过Safari 调试open in new window
发布(Distribution)证书和描述文件用于提交 AppStore,在 HBuilderX 中提交云打包后提交到 AppStore 审核发布

准备环境

  • 必需要有苹果开发者账号,并且加入了 “iOS Developer Program”
  • Mac OS 10.9 以上系统(如果已经申请 p12 证书则不需要)

登录 iOS Dev Center

打开网站 iOS Dev Centeropen in new window 使用苹果开发者账号登录 iOS Dev Center:

img
img

登录成功后在页面左侧选择 “Certificates,IDs & Profiles” 进入证书管理页面:

img
img

在证书管理页面,可以看到所有已经申请的证书及描述文件:

img
img

下面我们从头开始学习一下如何申请开发证书、发布证书及相对应的描述文件。

首先需要申请苹果 App ID (App 的唯一标识)

如果已经申请,可跳过此节

选择页面的 “Identifiers" 可查看到已申请的所有 App 应用标识,点击页面上的加号来创建一个新的应用标识:

img
img

选择标识类型为 “App IDs”,然后点击 “Continue”

img
img

平台选择 “iOS,tvOS,watchOS”,Bundle ID 选择 “Explicit”,在 Description 中填写描述,然后填写 Bundle ID,Bundle ID 要保持唯一性,建议填写反域名加应用标识的格式 如:“io.dcloud.hellouniapp”, 然后点击 “Continue” 注意:在 HBuilderX 中 App 提交云端打包时界面上的 AppID 栏填写的就是这个 Bundle ID

img
img

接下来需要选择应用需要使用的服务(如需要使用到消息推送功能,则选择“Push Notifications”),然后点击 “Continue” 注意:如果 App 用不到的服务一定不要勾选,以免响应审核

img
img

确认后选择提交,回到 identifiers 页面即可看到刚创建的 App ID:

img
img

至此,App ID 已经创建完毕,接下来开始创建开发证书,在创建开发证书前,需要先生成证书请求文件

生成证书请求文件

不管是申请开发 (Development) 证书还是发布 (Distribution) 证书,都需要使用证书请求 (.certSigningRequest) 文件,证书请求文件需在 Mac OS 上使用 “钥匙串访问” 工具生成。

在“Spltlight Search”中搜索“钥匙串”并打开 “钥匙串访问” 工具:

img
img
img
img

打开菜单 “钥匙串访问”->“证书助理”,选择“从证书颁发机构请求证书...”:

img
img

打开创建请求证书页面,在页面中输入用户邮件地址、常用名称,选择存储到磁盘,点击 “继续” :

img
img

文件名称为“CertificateSigningRequest.certSigningRequest”,选择保存位置,点击 “存储” 将证书请求文件保存到指定路径下,后面申请开发(Development)证书和发布(Production)证书时需要用到

img
img

申请开发(Development)证书和描述文件

开发(Development)证书及对应的描述文件用于开发阶段使用,可以直接将 App 安装到手机上,一个描述文件最多绑定 100 台测试设备(开发证书不能用于发布应用到 App Store)。

申请开发(Development)证书

在证书管理页面选择 “Certificates" 可查看到已申请的所有证书(TYPE:Development 为开发证书,Distribution 为发布证书),点击页面的加号来创建一个新的证书:

img
img

在 “Software” 栏下选中 “iOS App Development” 然后点击 “Continue”:

img
img

接下来需要用到刚刚生成的证书请求文件,点击“Choose File...”选择刚刚保存到本地的 “CertificateSigningRequest.certSigningRequest”文件,点击 “Continue” 生成证书文件:

img
img

生成证书后选择 “Download” 将证书下到本地 (ios_development.cer):

img
img

双击保存到本地的 ios_development.cer 文件,会自动打开 “钥匙串访问” 工具说明导入证书成功,可以在证书列表中看到刚刚导入的证书,接下来需要导出 .p12 证书文件,选中导入的证书,右键选择 “导出...”:

img
img

输入文件名、选择路径后点击 “存储”:

img
img

输入密码及确认密码后点击 “好”:

img
img

至此,我们已经完成了开发证书的制作(得到了 xxx.p12 证书文件),接下来,继续生成开发阶段所需的描述文件,在生成描述文件之前,需要先添加调试设备(iPhone 、iPad)

添加调试设备

开发描述文件必须绑定调试设备,只有授权的设备才可以直接安装 App,所以在申请开发描述文件之前,先添加调试的设备。 (如果已经添加设备,可跳过此节)

在证书管理页面选择 “Devices”,可查看到已添加的所有设备信息,点击页面上的加号来添加一个新设备:

img
img

填写设备名称 和 UDID(设备标识):

img
img

获取设备 UDID 方法,将设备连接到电脑,启动 iTunes,点击此区域可切换显示设备的 UDID,右键选择复制

输入完成后,点击“Continue” 继续完成添加即可;接下来继续申请描述文件

申请开发 (Development) 描述文件

在证书管理页面选择 “Profiles”,可查看到已申请的所有描述文件,点击页面上的加号来添加一个新的描述文件:

img
img

在 “Development” 栏下选中 “iOS App Development”,点击“Continue”按钮:

img
img

这里要选择之前创建的 “App ID” (这里是“io.dcloud.hellouniapp”),点击“Continue”:

img
img

接下来选择需要绑定的证书,这里建议直接勾选 “Select All”,点击“Continue”:

img
img

选择授权调试设备,这里建议直接勾选 “Select All”,点击 “Continue”:

img
img

输入描述文件的名称(如“HelloUniAppProfile”), 点击 “Generate” 生成描述文件:

img
img

点击“Download”下载保存开发描述文件(文件后缀为 .mobileprovision)

img
img

至此,我们已经得到了开发证书(.p12)及对应的描述文件(.mobileprovision),接下看一下如何制作发布证书及发布描述文件

申请发布(Distribution)证书和描述文件

发布 (Production) 证书用于正式发布环境下使用,用于提交到 Appstore 审核发布。发布证书打包的 ipa,不可以直接安装到手机上

申请发布(Production)证书

在证书管理页面选择 “Certificates" 可查看到已申请的所有证书(TYPE:Development 为开发证书,Distribution 为发布证书),点击页面的加号来创建一个新的证书:

img
img

在 “Software” 栏下选中 “App Store and Ad Hoc”,点击 “Continue”:

img
img

接下来同样需要用到之前生成的证书请求文件,点击“Choose File...”选择刚刚保存到本地的 “CertificateSigningRequest.certSigningRequest”文件,点击 “Continue” 生成证书文件:

img
img

生成证书成功,选择“Download” 将证书下载到本地 (ios_production.cer):

img
img

同样双击保存到本地的 ios_production.cer 文件将证书导入到 “钥匙串访问”工具中,可以在证书列表中看到刚刚导入的证书,接下来需要导出 .p12 证书文件,选中导入的证书,右键选择 “导出...”:

img
img

输入文件名、选择路径后点击 “存储”:

img
img

输入密码及确认密码后点击 “好”:

img
img

至此,我们已经完成了发布证书的制作(得到了 xxx.p12 证书文件),接下来,继续生成发布描述文件

申请发布 (Distribution) 描述文件

在证书管理页面选择 “Profiles”,可查看到已申请的所有描述文件,点击页面上的加号来添加一个新的描述文件:

img
img

在 “Distribution” 栏下选中 “App Store”,点击“Continue”按钮:

img
img

这里要选择之前创建的 “App ID” (这里是“io.dcloud.hellouniapp”),点击“Continue”:

img
img

接下来选择需要绑定的发布证书(iOS Distribution),这里勾选刚刚生成的发布证书”,点击“Continue”:

img
img

接下来输入描述文件的名称(如“HelloUniAppProfileDistribution”), 点击 “Generate” 生成描述文件:

img
img

然后点击 “Download” 将描述文件下载到本地(文件后缀为 .mobileprovision)

至此,我们已经得到了发布证书(.p12)及对应的发布描述文件(.mobileprovision)

上次编辑于:
贡献者: SunSeekerX