说明:翻译的
Sigh的指南, 原文地址 。

sigh
因为你宁愿把时间花在其它方面,也不要花在和 Provisioning 文件作斗争上。
sigh可以创建、更新、下载和修复 Provisioning Profiles(只需一条命令)。它支持 App Store,Ad Hoc,Development 和 Enterprise Profiles 以及一些很棒的功能,比如自动添加所有的测试设备。
功能
- 为你的应用程序 下载 最新的 Provisioning Profile
- 当 Provisioning Profile 过期的时候会 更新
- 当 Provisioning Profile 损坏的时候会 修复
- 如果不存在 Provisioning Profile 就会 创建 一个新的
- 支持 App Store,Ad Hoc 和 Development Profiles
- 支持 多个苹果账户,你的证书(Credentials)安装的存储在Keychain中
- 支持 多个团队
- 支持 Enterprise Profiles
自动管理iOS的推送证书,你可以使用 pem 。
为什么不让 Xcode 做这些工作?
sigh可以很容易的集成到你的 CI-server(e.g. Jenkins)- Xcode 有时会让 所有存在的 Profiles 失效
- 你可以对发生的事情进行控制
- 你仍然可以获取到 Signing Files,可用于你的脚本文件或者存储在Git中
参见sigh的执行:

安装
注意:根据 codesigning.guide,生成和维护你的 Provisioning Profiles,我们推荐使用 match。如果你想完整的控制要发生的事情以及知道Codesigning的更多知识,可以直接使用sigh。
sudo gem install sigh
确保你已经安装了 Xcode 最新版本的命令行工具:
xcode-select --install
使用
sigh
是的,这就是所有的命令!
sigh默认会为 App Store 创建、修复和下载 Profiles。
你可以像如下这样传递 Bundle identifier 和 username:
sigh -a com.krausefx.app -u username
如果你想生成 Ad Hoc 的Profile 替代 App Store 的Profile:
sigh --adhoc
Development Profile:
sigh --development
在指定的目录生成 Profile:
sigh -o "~/Certificates/"
下载你所有的 Provisioning Profiles:
sigh download_all
列出所有可用的参数和命令:
sigh --help
高级
默认 sigh 会在你的机器上安装下载的 Profile。如果你只想生成 Profile 跳过安装,使用如下标志:
sigh --skip_install
使用指定的名字保存 Provisioning Profile,使用 -q 选项:
sigh -a com.krausefx.app -u username -q "myProfile.mobileprovision"
出于某些原因,你不想 sigh 验证安装在你本地机器上的 Code Signing identity:
sigh --skip_certificate_verification
如果你需要 Provisioning Profile 更新,而不管是什么状态,使用 --force 选项。这会给你的 Profile 最大的生命周期。--force 也会将所有可用的设备添加到这个Profile。
sigh --force
默认情况下,sigh会在 Development Profiles 上包含所有的 Certificates,第一个 Certificate 是其它类型的。如果你需要指定使用哪一个 Certificate ,你可以使用环境变量 SIGH_CERTIFICATE,或者传递 Certificate 的 name 或者 expiry date 当做参数:
sigh -c "SunApps GmbH"
列出可用的参数和命令:
sigh --help
和 fastlane 一起使用
当和 fastlane 中的 cert 一起使用时 sigh 就变的很有趣了。
更新你的 Fastfile 文件包含如下代码:
lane :beta do
cert
sigh(force: true)
end
force: true 会确保在每次运行的时候都会重新生成 Provisioning Profile 。这会保证 sigh 始终使用正确的 Signing Certificate ,会安装在本地机器上。
修复(Repair)
sigh 会自动修复你那些已经存在并且过期或者无效的所有 Provisioning Profiles 。
sigh repair
重新签名(Resign)
如果你生成了 ipa 文件,但是想给 ipa 文件应用不同的 Code Signing,你可以使用 sigh resign:
sigh resign
如果 ipa 文件和 Provisioning Profile 位于当前文件夹,sigh 会为你找到它们。
你可以使用命令行传递更多的信息:
sigh resign ./path/app.ipa --signing_identity "iPhone Distribution: Felix Krause" -n "my.mobileprovision"
管理
使用 sigh manage ,会列出所有本地安装的 Provisioning Profiles :
sigh manage
删除所有过期的 Provisioning Profiles :
sigh manage -e
或者使用正则表达式删除所有的 iOS Team Provisioning Profile :
sigh manage -p "iOS\ ?Team Provisioning Profile:"
环境变量
运行 sigh --help 列出所有可用的环境变量的列表。
如果你使用 cert 与 fastlane的组合,会自动为你选择 Signing Certificate。(确保在 sigh 之前运行 cert)
如何工作?
sigh 会访问 iOS Dev Center 下载、更新或者生成 .mobileprovision文件。它使用 spaceship 和 Apple’s web services 通信。
如何存储我的密码?
sigh 使用来自 fastlane 的 CredentialsManager。
提示
fastlane工具链
-
fastlane:自动化构建和发布你 iOS 和 Android 应用程序的最简单方法 -
deliver:将你的应用、截图、元数据上传到App Store -
snapshot:将你iOS应用在每一种设备上进行本地化自动截图 -
frameit:快速将你的截图放入到适合的设备框中 -
pem:自动生成和更新你的推送通知证书 -
produce:使用命令行工具在 iTunes Connect 和 Dev Portal 上创建新的iOS应用 -
cert:自动创建和维护iOS的 code signing certificates -
spaceship:一个 Ruby library,自动连接 Apple Dev Center 和 iTunes Connect -
pilot:管理你TestFlight测试人员的最好方式,使用终端构建 -
boarding:邀请你 TestFlight 的beta测试人员的最简单方式 -
gym:构建你iOS应用程序 -
scan:为你iOS和Mac应用运行测试的最简单方法 -
match:使用Git在你的团队中同步你的 certificates 和 profiles -
supply:将你的Android应用和数据上传到 Google Play -
screengrab:Android版snapshot,一样的功能
使用’Provisioning Quicklook plugin’
下载然后安装 Provisioning Plugin。
它会像下图这样向你展示 mobileprovision 文件:

找不到 App Identifier
如果你也想在 Apple Developer Portal 上创建一个新的 App Identifier,查看 produce,它就是做这个的。
对 Xcode 管理的 Profiles 有什么影响?
sigh 永远不会触碰或者使用被 Xcode 创建、管理的 Profiles。相反, sigh 只会管理自己的 Provisioning Profiles 集合。
帮助?
请提交 issue 到 GitHub,并提供你关于设置的信息。