sign 签名
介绍
sign
可以创建,更新,下载和修复 provisioning profiles(使用一个命令)。
它支持App Store,Ad Hoc,开发和企业配置文件,并支持好的特性,如自动添加所有测试设备。
特点:
- 下载最新的应用配置文件
- 更新配置配置文件,当它已过期
- 修复配置配置文件,当它坏了
- 创建新的配置配置文件(如果尚不存在)
- 支持App Store,Ad Hoc和Development Profile
- 支持多个Apple帐户,将您的凭据安全地存储在钥匙串中
- 支持多个团队(multiple Teams)
- 支持企业应用配置(Enterprise Profiles)
为什么不用Xcode自动完成这些事情?
sign
可以轻松地集成到您的CI服务器(例如:Jenkins)
- Xcode有时使现有所有的配置文件无效
- 你可以控制发生什么
- 您仍然可以获得签名文件(signing files),然后您可以使用它们构建脚本,或者将其存储在git中。
使用效果一览
使用
进入工程目录后,仅需要一行命令,
fastlane sigh #默认会在当前文件夹下生成针对appstore的`.mobileprovision`
命令 | 描述 |
---|
fastlane sigh | App Store profile 或 InHouse profile |
fastlane sigh -a com.krausefx.app -u username | 指定bundle identifier 和 username(apple id) |
fastlane sigh --adhoc | 生成Ad Hoc profile |
fastlane sigh --development | 生成 development profile |
fastlane sigh -o "./Certificates/" | 指定输出文件夹 |
fastlane sigh download_all | 下载所有的 provisioning profiles |
fastlane sigh --help | 列出帮助 |
高级使用
命令 | 说明 |
---|
fastlane sigh --skip_install | 默认情况下,sigh将下载的配置文件安装在您的机器上。 如果只想生成配置文件并跳过安装,使用该命令 |
fastlane sigh -a com.krausefx.app -u username -q "myProfile.mobileprovision" | 用特定的名字保存,使用 -q |
fastlane sigh --skip_certificate_verification | 跳过验证安装在本机上的 code signing identity |
fastlane sigh --force | 如果您需要更新配置配置文件,而不管其状态如何,请使用--force选项。这给您一个具有最大生命周期的配置文件。 --force还会将所有可用的设备添加到此配置文件中。 |
fastlane sigh --help | 查看帮助:列出可用参数和命令 |
默认情况下,sigh
将包括开发配置文件上的所有证书,以及其他类型的第一个证书。
如果需要指定要使用的证书,可以使用环境变量SIGH_CERTIFICATE,或将证书的名称或到期日期作为参数传递:
fastlane sigh -c "SunApps GmbH"
在fastlane中使用
和fastlane配合起来使用,非常有趣。
编辑Fastfile
:
lane :beta do
cert
sigh(force: true)
end
force:true
将确保在每次运行时重新生成配置配置文件。 这将使得sign
总是使用正确的签名证书(signing certificate),证书将会被安装到本机上。
修复(Repair)
sigh
可以自动修复已过期(expired)或无效(invalid)的所有现有provisioning profiles。
重签名(Resign) ✨✨✨
如果您生成了您的ipa文件,但希望将不同的code signing
应用于ipa文件,则可以使用sigh resign:
如果ipa文件和配置文件位于当前文件夹中,sigh
将会自动找到他们。
下面的命令可以传递更多信息:
fastlane sign resign ./path/app.ipa --signing_identity "iPhone Distribution: Felix Krause" -p "my.mobileprovision"
produce 配置appid
介绍
produce最典型的使用就是创建appid:
功能介绍:
- Create new apps on both iTunes Connect and the Apple Developer Portal
- Modify Application Services on the Apple Developer Portal
- Create App Groups on the Apple Developer Portal
- Associate apps with App Groups on the Apple Developer Portal
- Support for multiple Apple accounts, storing your credentials securely in the Keychain
使用
创建新的应用:
按提示输入Apple id 、AppId、App Name即可,随后将在Apple Dev Center创建好AppId了。
查看可执行的参数列表:
开/关应用服务举例
命令 | 详情 |
---|
fastlane produce enable_services --homekit --healthkit | 开启应用服务,以homekit和healthkit为例 |
fastlane produce disable_services --icloud | 关闭icloud服务为例 |
fastlane produce group -g group.krausefx -n "Example App Group" | 创建一个app group |
fastlane produce associate_group -a com.krausefx.app group.krausefx | 将appid和app group关联 |
查看参数列表
查看开启/关闭服务的各种参数的列表
fastlane produce enable_services --help
fastlane produce disable_services --help
环境变量
所有可用的值也可以使用环境变量传递,运行fastlane produce --help
以获取所有可用参数的列表。
fastlane Integration
可以通过lane控制创建:
lane :release do
produce(
username: 'felix@krausefx.com',
app_identifier: 'com.krausefx.app',
app_name: 'MyApp',
language: 'English',
app_version: '1.0',
sku: '123',
team_name: 'SunApps GmbH'
enable_services: {
app_group: "on"
apple_pay: "on"
associated_domains: "on"
data_protection: "complete"
game_center: "on"
health_kit: "on"
home_kit: "on"
wireless_accessory: "on"
icloud: "cloudkit"
in_app_purchase: "on"
inter_app_audio: "on"
passbook: "on"
push_notification: "on"
siri_kit: "on"
vpn_configuration: "on"
}
)
deliver
end
想要在deliver
中使用新生成的app,需要在Deliverfile
加上这么一句:
apple_id ENV['PRODUCE_APPLE_ID']
它会告诉deliver
,哪个App id
会被使用,尽管这个app现在还不能在App Store上获取到。
您仍然必须填写剩余的信息(如屏幕截图,应用说明和定价)。 您可以使用交付使用CLI上传应用程序元数据。
cert 证书
简介
cert主要用来创建和维护iOS code signing certificates
.
cert
专注于代码签名,你可为不同的环境(开发/生产)创建新的code signing identitie
,或使用本地存在的 code signing identitie
。
使用
这将检查您的本地计算机上是否安装了任何可用的签名证书。
只有在需要创建新的证书的时候,证书才会被创建
- 创建一个新的私钥
- 创建一个新的签名请求
- 生成,下载和安装证书
- 将所有生成的文件导入到钥匙串中
证书永远不会撤销您现有的证书。 如果您不能再创建证书,证书将引发异常,这意味着您必须撤销其中一个现有证书,为新的证书腾出空间。
| 举例 |
| --- | --- |
| --development
| 创建开发证书
|--force
|创建证书,即使有一个已经存在了
传递Apple ID:
fastlane cert -u cert@krausefx.com
查看有关可用命令的列表:
请记住,证书无法从Apple Developer Portal
下载现有证书+私钥,私钥永远不会离开您的计算机。
配合sigh
使用
cert
在fastlane中和sigh配合起来使用时变得非常有意思。
fastfile:
lane :beta do
cert
sigh(force: true)
end
gym 自动打包
介绍
gym帮助你构建和打包iOS应用,帮你干繁琐的工作,并且超级容易上手。
gym
是shenzhen的替代品。
优点:
举例 | Gym Features |
---|
1 | 比shenzhen快30% |
2 | 构建应用时输出漂亮工整 |
3 | 帮助你解决常见的构建错误,如 code signing 问题 |
4 | 合理的缺省配置:自动检测schemes等 |
5 | 和fastlane的其他工具完美配合 |
6 | 自动生成一个ipa和一个压缩的dSYM文件 |
7 | 简单,就一个gym 命令 |
8 | 简单、动态地使用参数和环境变量进行配置 |
9 | 在Gymfile 里存储常用的打包配置 |
10 | 所有的archives被存储了,可以用xcode访问 |
11 | 支持构建iOS和mac应用 |
用法
fastlane gym
#fastlane gym --export_method ad-hoc
#fastlane gym --export_method enterprise
#fastlane gym --export_method app-store
只需要上面一句话就可以了。 如果想要更多的配置,可以用下边的参数:
fastlane gym --workspace "Example.xcworkspace" --scheme "AppName" --clean
选择Xcode:
DEVELOPER_DIR="/Applications/Xcode6.2.app" gym
列出可用参数列表:
运行遇到错误,使用verbose
模式获取更多信息:
如果您没有上传到App Store或TestFlight,请设置正确的导出方法:
fastlane gym --export_method ad-hoc
要使用bool参数,确保这么使用gym
:
fastlane gym --include_bitcode true --include_symbols false
获取xcodebuild输出,请到~/Library/Logs/gym
查看。
Gymfile
因为如果每次构建可能都需要传参数,比较麻烦,我们可以将默认参数存到Gymfile
中。
运行fastlane gym init
创建一个新的配置文件,例如:
scheme "Example"
sdk "iphoneos9.0"
clean true
output_directory "./build"
output_name "MyApp"
导出选项
从Xcode7以来,gym
使用新的Xcode API,它允许我们使用plist文件指定导出选项。
默认情况下,gym为您创建此文件,您可以使用export_method,export_team_id,include_symbols或include_bitcode修改一些参数。 如果您想要更多选项,例如创建manifest file
或app thinning
,可以提供自己的plist文件:
export_options "./ExportOptions.plist"
或者您可以直接在Gymfile中提供值的哈希值:
export_options(
method: "ad-hoc",
manifest: {
appURL: "https://example.com/My App.ipa",
},
thinning: "<thin-for-all-variants>"
)
For the list of available options run xcodebuild -help
.
自动化整个流程
可以与fastlane很好的配合使用:
lane :beta do
scan
gym(scheme: "MyApp")
crashlytics
end