iOS持续集成(二)——证书管理神器match

对于iOS的开发者来说,一定都会遇到被证书与测试设备烦到不行的时候。后台的证书乱七八糟,添加设备后打包的出来的ipa总是装不上,证书无效等等问题。这些问题一搞就是浪费了大部分时间。工程师的世界里怎么能忍受这些重复而且毫无意义的工作?这不,fastlane里面的match解决上面的所有问题。

工作原理

其实match工具的核心很简单,就是自动创建一套证书与Profile文件。然后通过Git托管这些文件。在共享机器上面通过下载并把证书装到机器上面即可使用。

基本使用

match已经集成到fastlane全家桶里面。

初始化

1
fastlane match init`

在此过程中,需要输入一个 git repo 地址存放相关的证书。

创建证书

初始化完成后,可以使用下面的命令生成 certificates 和 profiles

1
2
3
fastlane match appstore

fastlane match development

如果你第一次使用,它将会创建新的 certificate 和 provisioning profile 文件,上传到配置的 Git repo。否则,将会从 Git repo 下载文件并自动安装到本机。

在此过程中,将会使用openssl加密证书,需要提供密码,该密码会在下载安装证书时使用,同时这个密码会保存到 Keychain 中。

在不同 bundleId 中,可以使用,号作为分割符

1
fastlane match appstore -a tools.fastlane.app,tools.fastlane.app.watchkitapp

甚至可以在fastlane中定义这样的一个任务

1
2
3
lane :certificates do
match(app_identifier: ["com.krausefx.app1", "com.krausefx.app2", "com.krausefx.app3"], readonly: true)
end

在新机器上

很简单,执行下面即可

1
fastlane match development --readonly

测试设备管理

注册新设备

使用match批量帮你添加设备,可以节省大部分时间。

1
2
3
4
lane :beta do
register_devices(devices_file: "./devices.txt")
match(type: "adhoc", force_for_new_devices: true)
end

使用force_for_new_devices参数,如果设备数量发生变化时,match会重新生成 provisioning profile 文件,这简直对于我们来说是福音啊

如果没使用 fastlane ,可以直接使用下面命令

1
fastlane match adhoc --force_for_new_devices

其他用法

删除

1
2
3
fastlane match nuke development
fastlane match nuke distribution
fastlane match nuke enterprise

这个命令会把你所有证书相关删除,请小心使用这命令。不过你不用担心的是,已发布的应用不受影响。

更新密码

1
fastlane match change_password

更新加密的密码,并会同步到 Git repo中。下次在新机器上需要使用新的密码

手动解密码

导出.p12文 件

更多命令参数相关的参照官方文档

总结

fastlane match能大大节省我们的时间,并且更加方便管理证书。使用fastlane刻不容缓,你还不快用?