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。

fastlane sigh repair

重签名(Resign) ✨✨✨

如果您生成了您的ipa文件,但希望将不同的code signing应用于ipa文件,则可以使用sigh resign:

fastlane 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

使用

创建新的应用:

fastlane produce

按提示输入Apple id 、AppId、App Name即可,随后将在Apple Dev Center创建好AppId了。

查看可执行的参数列表:

fastlane produce --help

开/关应用服务举例

命令 详情
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' # only necessary when in multiple teams
    
    # Optional
    # App services can be enabled during app creation
    enable_services: {
      app_group: "on"               # Valid values: "on", "off"
      apple_pay: "on"               # Valid values: "on", "off"
      associated_domains: "on"      # Valid values: "on", "off"
      data_protection: "complete"   # Valid values: "complete", "unlessopen", "untilfirstauth"
      game_center: "on"             # Valid values: "on", "off"
      health_kit: "on"              # Valid values: "on", "off"
      home_kit: "on"                # Valid values: "on", "off"
      wireless_accessory: "on"      # Valid values: "on", "off"
      icloud: "cloudkit"            # Valid values: "legacy", "cloudkit"
      in_app_purchase: "on"         # Valid values: "on", "off"
      inter_app_audio: "on"         # Valid values: "on", "off"
      passbook: "on"                # Valid values: "on", "off"
      push_notification: "on"       # Valid values: "on", "off"
      siri_kit: "on"                # Valid values: "on", "off"
      vpn_configuration: "on"       # Valid values: "on", "off"
    }
  )

  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

使用

#默认是生产环境
fastlane cert

这将检查您的本地计算机上是否安装了任何可用的签名证书。

只有在需要创建新的证书的时候,证书才会被创建

  • 创建一个新的私钥
  • 创建一个新的签名请求
  • 生成,下载和安装证书
  • 将所有生成的文件导入到钥匙串中

证书永远不会撤销您现有的证书。 如果您不能再创建证书,证书将引发异常,这意味着您必须撤销其中一个现有证书,为新的证书腾出空间。

举例
--development 创建开发证书
--force 创建证书,即使有一个已经存在了

传递Apple ID:

fastlane cert -u cert@krausefx.com

查看有关可用命令的列表:

fastlane cert --help

请记住,证书无法从Apple Developer Portal下载现有证书+私钥,私钥永远不会离开您的计算机。

配合sigh使用

cert在fastlane中和sigh配合起来使用时变得非常有意思。

fastfile:

lane :beta do
  cert
  sigh(force: true)
end

gym 自动打包

介绍

gym帮助你构建和打包iOS应用,帮你干繁琐的工作,并且超级容易上手。

gymshenzhen的替代品。

优点:

举例 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

列出可用参数列表:

fastlane gym --help

运行遇到错误,使用verbose模式获取更多信息:

fastlane 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"    # store the ipa in this folder
output_name "MyApp"           # the name of the ipa file

导出选项

从Xcode7以来,gym使用新的Xcode API,它允许我们使用plist文件指定导出选项。 默认情况下,gym为您创建此文件,您可以使用export_method,export_team_id,include_symbols或include_bitcode修改一些参数。 如果您想要更多选项,例如创建manifest fileapp 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

fastlane使用指南(一) word-wrap