Fastlaneとは
iOS/Android のアプリ開発で必要な様々な作業を自動化してくれるツール
感動しすぎて泣けます。
- ipa/apkの作成
- iTunesConnect/GoolePlayへのipa/apkのアップロード
- iTunesConnect/GoolePlayのメタデータの登録・更新
- テストの実行
- iOSProvisioningファイル/証明書の管理
- DeployGate/Testflightなどへのアップロード
設定
Fastfile と呼ばれる設定ファイルに ruby で記述する
lane :beta do
increment_build_number
cocoapods
match
testflight
sh "./customScript.sh"
slack
end
実行
fastlane beta
actionについて
action が用意されていて、実行したい action を記載していく。主要な action は、 command として実行することも可能
bundle exec fastlane deliver
commandについて
fastlane は、様々な command に細分化されている。 commandは独自に、実行可能だし、Fastfile に書いて実行することも可能.pemだけでも便利なのでまずはこれから使うというのもあり。
- match cerやprovisiongの管理
- gym Project の build
- deliver ipa の iTunesへの配信
- pem 証明書の管理
インストール
- ローカルにしれっと入れる
gem install fastalne
- CIでまわすために bundle でいれる
# Gemfile
gem 'fastlane'
# 実行
# --path はお好みで
bundle install --path vendor/bundler
初期設定
以後、bundle 経由でインストールしたと仮定します。
bundle exec fastlane init
Your Apple ID (e.g. fastlane@krausefx.com):[appleIDを入力]
# 以後パスワードなどきかれるので、プロンプトどうりにいれていきます
pem
Push 通知用の 証明書作成、設定などを一括でやってくれる。
泣ける!
bundle exec pem -a com.hoge.sampleapp1 -u hoge@apple.com
match
証明書管理の新しいやりかた. DevCenter でぽちぽち管理するのではなく、github のレポジトリに配置して、
管理する。涙出る
bundle exec match init
bundle exec match appstore -a com.hoge.sampleapp1 -u hoge@apple.com
match
iOSDevcenterある証明書を一旦すべて削除してから使うのがオススメ!
リリースしているアプリに影響はないよと document にも書いてます。
bundle exec match nuke
deliver
iTunesConnect にアップロードするためのコマンド。バイナリだけではなく、metadataや screenshotsもアップロードできる。
bundle exec deliver
deliver によるストア情報の管理
メタデータのダウンロード
bundle exec deliver download_metadata
deliver によるストア情報の管理
スクリーンショットのダウンロード
bundle exec deliver download_metadata
deliver によるストア情報の管理
- ダウンロードしたファイルを 編集して deliver すればOK
- git で管理できるので変更履歴も終えてサイコー
deliverの細かなポイント
-
download_metadata で落としてきたファイルに app_icon があって、なぜか jpeg なので一旦削除しないと、deliver できません。できるようになってました -
複数の target を管理しないのであれば、Deliverfile にメタデータを書いてもOKです。
-
deliver はデフォルトだと、アップする前に ブラウザが起動して、Store 情報の確認ができます。y/n をきかれるので、OKであれば y でアップされます。 この機能は,CI でまわすときには、不要なので、 deliver に force: true を渡せば 確認はされません。
その他便利オプション
- --skip_metadata, --skip_screenshots, --skip_binary_upload などの便利な オプション
各種設定ファイルについて
Fastlaneには複数の機能がふくまれていて、一番重要な Fastfile 以外にも設定ファイルがたくさんできる。
(Appfile、Deliverfile、Fastfile、Matchfileなど)
各種設定ファイルについて (1/2)
ただし、設定ファイルは、各コマンドに何も指定しなかった時に使われる値、つまりデフォルト値程度の意味がなく、
各種機能のコマンドには、共通して上書きしたいオプションを渡せるようになっている。
渡せるオプションの例
# アプリID
-a com.hoge.sampleapp
# AppleID
-u hoge@apple.com
CustomAction
bundle exec fastlane new_action
CustomAction で使えるツール
Actions.sh("git status")
Fastlane::UI.user_error("message")
Fastlane::UI.success("message")
UI.important "Seems like launching fastlane takes a while - please run"
UI.message ""
UI.command "[sudo] gem cleanup"
UI.message ""
UI.important "to uninstall outdated gems and make fastlane launch faster"
UI.important "Alternatively it's recommended to start using a Gemfile to lock your dependencies"
UI.important "To get started with a Gemfile, run"
UI.message ""
UI.command "bundle init"
UI.command "echo 'gem \"fastlane\"' >> Gemfile"
UI.command "bundle install"
UI.message ""
UI.important "After creating the Gemfile and Gemfile.lock, commit those files into version control"
Actionを直接実行
bundle exec fastlane run hoge_action
ドキュメント
action に渡せる optionや commandに渡せるoption やその他の tips はdocumentを参照。
またなんやかんやソースコードを見るのがよい。わかりやすくて綺麗!
- docs
- Githubのdocs
- action一覧
- [example一覧] (https://github.com/fastlane/examples)
AppStore(iOS) と GooglePlay(Android)開発 の自動化の比較
- Fastlaneは、そもそも iTunesConnect 用のツールなので、iTunesを自動化する方に注力されている
- GooglePlay では、新規アプリの作成はできない、screenshot の download はできない等の GooglePlayのAPIの制限による制限がある
- Androidアプリの開発は、gradle がついているので、自動化でやりたいことはそもそもなんでもできる。ただ、fastlaneのコマンドを共通化することで、開発をやりやすくすることはできる
ios_deploy
- ios で、adb install/uninstall を行えるツール
- npm でいれる