# iOS APP的开发到底是什么流程?
## 开发者账号
这个必须得有
## App Store Connect内准备项目
按图形界面操作即可
## 证书(Certificates)、产品标识(Identifiers)、设备(Devices)、配置文件(Profiles)
这四样,一样都不能缺,他们的关系是这样的:
```text
Devices + Identifiers + 打算使用的功能 = Profiles
Profiles + Certificates = 打包所需
```
其中Xcode可以自动生成证书(Certificates),如果你不想限制在某一台设备某一个Xcode上,也可以和其他的一样,在开发者中心生成。
## Xcode内准备项目
要把上一条的那些东西导入进来,比如项目配置里要设置证书和ID。
英文环境下,要强迫自己看清楚每一个单词,然后联系起来看懂意思,一定不要囫囵吞枣!
> bundle ID 和 Identifiers 和Certificates 和 Profiles 它们是四个不同的东西
## 编写程序
Workspace、Project、info.plist、Objective-C、Swift、Pods等概念自行了解。
## 构建和运行
Xcode的构建(build)和运行(run)环境由一个叫schema的东西控制,schema里可以修改每一个生命周期(构建、运行、测试(test)、分析(analyze)、打包(archive)等)的一些配置。设置好schema然后选好设备,就可以构建和运行了。所谓构建(build)也就是各类语言通用的【预处理-编译-链接-后处理】这个过程,会C的话就很好理解。
## Xcode内打包项目
打包叫做Archive,默认的schema使用release方式进行构建。上传到Connect的每一个构建版本都得拥有不同的构建号(也就是info.plist项目信息里的build字段,一个递增正整数),即使是App Store把你上传的东西打回了,没有实际提交上去,你也得把build变高再重新上传,不能用原来的号码。
## 上传到APP Store Connect (TestFlight)
在Archive里有一个Upload,点完之后就能上传到TestFilght了。
上传成功后也不是直接就能用,会有一个分钟级或小时级的等待期。
然后在Connect的项目页面或者TestFlight测试页面,就可以选择刚才的构建版本发布了。
## TestFlight
TestFlight是苹果APP在App Store上架前的必经之路,顾名思义就是“测试航班”,苹果世界的所有内测、公测,都在TestFlight里完成,正式上架也是从TestFlight里选择已有的构建版本作为正式版上架。测试员首先在苹果设备上下载TestFlight APP,在TestFlight APP内可以看到他当前加入的测试组和可用来测试的构建版本,然后下载构建版本进行测试。
TestFlight里你的APP的每一个构建版本在每一个测试员手里的每一次崩溃,都会有记录,而且可以直接用Xcode进行栈跟踪,非常方便(对Hybrid就没那么方便了,原生确实很方便很牛逼)。
大概就是这样。