Skip to content

Latest commit

 

History

History
119 lines (81 loc) · 4.11 KB

fastlane.md

File metadata and controls

119 lines (81 loc) · 4.11 KB

fastlane

一个快速打包发布 app 的工具, 能够大大提高开发人员的打包发布效率,你要是人工去整这些东西,非常容易出错,而且搞一次还得花不少时间。

IOS 构建

Mac 本地安装

xcode-select --install
# Using RubyGems
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init
# to have your Fastfile configuration written in Swift (Beta)
fastlane init swift

证书管理

fastlane 提供了好几种证书管理的方式,非常方便团队协作

手动导入证书

若你直接将证书加密放到仓库下,可以直接通过解压导入, 比如,本项目证书放置在 sh/release/certificates 文件夹下,可以解压后再导入

(解压代码位于 sh/release/decrypt-key.sh

#!/bin/sh

if [[ -z "$PROFILE_NAME" ]]; then
    echo "Error: Missing provision profile name"
    exit 1
fi

if [[ ! -e "./sh/release/certificates.tar.enc" ]]; then
    echo "Error: Missing encrypted certificates."
    exit 1
fi
openssl aes-256-cbc -K $encrypted_28b1957c839b_key -iv $encrypted_28b1957c839b_iv -in ./sh/release/certificates.tar.enc -out ./sh/release/certificates.tar -d
tar xvf ./sh/release/certificates.tar -C ./sh/release/certificates

fastlane 导入脚本

    # Import distribution certificate
    import_certificate(
      certificate_path: "sh/release/certificates/ios_distribution.p12",
      certificate_password: ENV["KEY_PASSWORD"],
      keychain_name: keychain_name,
      keychain_password: keychain_password
    )

    # Import push certificate
    import_certificate(
      certificate_path: "sh/release/certificates/ios_push_distribution.p12",
      certificate_password: ENV["KEY_PASSWORD"],
      keychain_name: keychain_name,
      keychain_password: keychain_password
    )

match

match 可以自动为你选择和生成需要的证书,这也是官方推荐的方式,你只需要将团队用到的证书统一一个仓库进行管理。
可以参考这篇文章(setup-fastlane-match-for-ios )进行设置

cert 与 sigh

可以方便你手动对证书进行管理。

  • cert 可以自动帮你下载或者生成 Certificates不要用于 第三方 CI 机器
  • sign 可以自动帮你下载 Provisioning Profiles

插件

使用到三个插件

上传至蒲公英

参见蒲公英官网教程

一些疑问

Two-factor authentication

首先,必须开通 Two-factor authentication

再来,你可以在 CI 机器上设置 session( 如果产生 session 的机器与 CI 机器不在一个区内,那也悲剧,本项目基于 travis 构建时会要求输入安全码,所以构建会不成功)

参考

demo 项目

可以学习这些项目打包构建的流程