match是fastlane提供的一种全新的管理证书的方式,它使团队所有成员共享一份代码签名,以减免不必要的证书创建,描述文件失效等问题。
1. 为什么使用match
1.1 问题
- 在团队开发中证书(certs)与描述文件(profiles),有时候会被创建多次,新旧同时在用。并且描述文件由于新旧不同导致某些测试设备没有加入,造成无法测试、打包失败等会等问题。
1.2 match的优势
- match使所有成员共享一份证书和描述文件,减少管理和维护成本
- match简化请求证书、生成描述文件、注册设备等工作,终端一行命令全部完成。
- match使用git管理所有的证书和描述文件,所以只要新人拥有git的访问权限,安装了fastlane,新的设备就可以迅速投入工作
- match对新开发者极其友好,远离证书配置大坑
2. match使用
在使用Match之前,你需要配置fastlane环境。fastlane是用于配置iOS和Android的持续集成的神器,而match只是其中一项功能。具体安装请参考这篇文章 fastlane安装指南
2.1 初始化(新设备接入可以跳过这一步,直接查看2.2)
-
准备一个私有的 git仓库
-
cd 到项目文件夹下,执行
fastlane match init
3. fastlane match init之后,在项目的文件目录里面会有一个 Matchfile文件,打开编辑,编辑之后保存。
git_url("https://github.com/fastlane/certificates")// 管理仓库的地址
app_identifier("tools.fastlane.app")//项目的bundleid,如果包含多个target时,你可以使用 app_identifier(["tools.fastlane.app","tools.fastlane.app1"])
username("user@fastlane.tools")
- 自动配置
开发环境 *fastlane match* == *fastlane match development*,development是match 默认type,你可以在Matchfile 看到
fastlane match
adhoc环境
fastlane match adhoc
生产环境
fastlane match appstore
2.2 新设备接入
在拉取项目代码后,查看是否包含Matchfile文件。执行对应环境match,在确保git上已经存在证书时,要使用--readonly
- 开发环境
fastlane match development --readonly - adhoc环境
fastlane match adhoc --readonly - 生产环境
fastlane match appstore --readonly
2.3 xcode上的处理
关闭xcode自动证书管理,输入项目bundleid,选择对应的描述文件
debug 环境的描述文件,默认 mactch Development 开头
adhoc(forBeta) 环境的描述文件,默认 mactch adhoc 开头
release 环境的描述文件,默认 mactch Appstore 开头
3. 切分支
3.1 如果团队其他成员也具备生成证书的权限,建议切新分支提供给团队其他成员使用时,其他成员只需要match这个分支,避免对master进行修改。
- 开发环境
fastlane match development --git_branch [新分支名称] --readonly - adhoc环境
fastlane match adhoc --git_branch [新分支名称] --readonly - 生产环境
fastlane match appstore --git_branch [新分支名称] --readonly
3.2 多个项目
如果团队有多个项目,也建议切新分支,不同分支的管理不同的项目的证书和描述文件
4. 其他
-
描述文件(profiles)所在目录
open ~/Library/MobileDevice/Provisioning\ Profiles/,你可以在这个目录里删除对应的描述文件 -
关于企业证书.暂时不建议使用match管理企业证书,因为企业证书的生成和revoke会直接导致线上app能否使用,误操作风险很大。
.