先日Firebase App Distributionのbeta版がリリースされました。
Firebase App Distribution を使用すると、Trusted Tester(テスター)にアプリを簡単に配布できます。アプリをテスターのデバイスに迅速に配布できるので、早い段階からフィードバックを得ることができます。
これからアプリ配布がFirebase上で実現できるようになります。
Fabricで今までアプリ配布してた場合、今後はFirebaseへの移行が推薦されると思います。
この記事では、
- Firebase App Distributionを手動で利用する作業について
- fastlaneを用いたFirebase App Distributionアップロード方法
- BitriseでFirebase App Distributionにアップロードする方法
- Firebase App Distributionの使い勝手について
を記載します。
Firebase App Distributionを手動で利用する作業について
Firebase App Distributionがコンソール画面に登場しました。
fastlaneを用いないで、手動で利用する場合の作業は主に2つ。
- テスターの追加・テストグループの作成
- .ipaファイルをドラッグ&ドロップして配信
テスターの追加・テストグループの作成
Firebase App Distributionでアプリを配布する際、
全端末で簡単にアプリをインストールできるわけではありません。
テスターにメールアドレスを登録する必要があります。
テスターの追加方法は2種類あります。
すでにFirebase Consoleに追加済みのメンバーの場合、
以下の「テスターを追加する」にアドレスを入力するだけでOKです。
Firebase Consoleに追加されていないメンバーの場合、
招待リンクを作成して、配布することができます。
テスターを追加したら、テストグループを作成することができます。
.ipaファイルをドラッグ&ドロップして配信
XcodeでArchive実行して、.ipaファイルをExportします。
(詳しい説明は省略します。)
作成した.ipaファイルを以下にドラッグ&ドロップします。
その後、手順に沿って
- テスター又はテスターグループを選択
- リリースノートを記載(任意)
- 配信
を行えば、アプリ配布が完了です。
テスターを選択する際、毎回テスター全員分を選択するのは面倒なので、
事前にテスターグループを作成しておくと、ここの作業が楽になります。
アプリをインストールする
配信が行われると、テスターにメールが送られます。
以下の手順に沿ってアプリをインストールします。
- メールのAccept Invitationをタップ
- Safariで起動
- Googleサインイン(テスターとして登録したアドレス)
- 同意にチェックを入れてAccept Invitationをタップ
- Install Firebase Profileをタップ
- アラートのAllowを選択
- Closeをタップ
- Profileがインストールするために、設定アプリを立ち上げる
- トップ画面にある「プロファイルをダウンロード」を選択
- インストールを選択
- パスコードを入力してインストール
- 完了すると「App Distribution」というアプリがインストール、立ち上げる
- Test apps一覧が表示されたらOK。対象のアプリをインストールします。
注意1: アプリをインストールできない時
テスターに追加するだけでは、アプリを端末にインストールできない場合があります。
その場合は、Apple Developer Programの方に端末登録していないか確認してください。
EnterpriseならApple Developer Programの方に登録しなくても大丈夫(なはず)ですが、
Adhocなどの場合は端末登録が必須です。
注意2: GoogleサインインはSafariで
メールアプリでAccept Invitationをタップしたら、
メールアプリ内でGoogleサインイン画面が出てきます。
ここでサインインをするのは推薦しません。
後々アプリインストール処理はSafariアプリで行います。
そのため、サインインをするのは、Safariアプリに移動してからするのを推薦します。
注意3: アプリのインストールにめっちゃ時間がかかる
アプリインストールを開始すると「?」のついたアイコンが出現します。
そして、なかなかインストール完了してくれません。
自分の環境では、調子悪いときは15分くらいインストールに時間がかかります。
ここはグッとこらえて、「?」アイコンを途中で押したりせず、時間を待ちましょう。
Firebaseさんにここは改善して欲しいです。
fastlaneを用いたFirebase App Distributionアップロード方法
ここからが本題です。fastlaneを用いて、
Firebase App Distributionへの.ipaアップロードを自動化します。
fastlaneとは
詳しい説明・セット方法は今回は省略しますが、簡単に言うと、
アプリ(iOS,Android)のリリース作業を自動化するCUIツールです。
Rubyで出来ており、プロジェクトのrootディレクトリ階層に、
fastlane
└Fastfile
└Appfile
というフォルダ構成で、FastfileとAppfileという2つのファイルがメインであります。
Fastfileに自動化のコードを書きます。
以下ではFastfileに書く内容を記載しています。
Firebase App Distributionへのアップロードを実現するコード
先にFastfileに書く内容を提示してから、補足説明をします。
※hogeは自身の環境のものに置き換えてください。
desc "deploy STG on Firebase App Distribution"
lane :distribution do
# .ipaファイルの作成
gym(
workspace: "hoge.xcworkspace",
scheme: "hoge",
export_method: "ad-hoc",
export_options: {
method: 'ad-hoc',
teamID: 'hoge',
provisioningProfiles: {
'hoge(Bundle Identifier)' => 'hoge(Provisioning Profile Name)'
}
}
)
# firebase app distributionに.ipaアップロード
firebase_app_distribution(
app: "hoge(appId)",
testers: "hoge1@example.com, hoge2@example.com",
release_notes: "hoge",
firebase_cli_path: "node_modules/.bin/firebase"
)
end
上記の場合、プロジェクトRootディレクトリで、
$ fastlane distribution
とコマンドを打てば実行されます。
fastlaneのバージョンをbundlerで管理している場合は、
$ bundle exec fastlane distribution
となります。
.ipaファイルの作成
.ipaファイルを作成するためのコードを書きます。
既に.ipaファイルが作成されている場合は省略できます。
上記ではgymで書いていますが、 build_app
で書いてもいいと思います。
- workspace: 対象のworkspace名、cocoapods未使用ならxcodeproj
- scheme: 対象のscheme名
- export_method: [app-store, ad-hoc, enterprise, development]
- method: export_methodと合わる
- teamID: https://developer.apple.com/account/#/membershipで確認
- provisioningProfiles: Bundle IdentifierとProvisioning Profileのセット
firebase app distributionに.ipaアップロード
firebase app distributionにアップロードするためのコードを書きます。
- app: FirebaseのアプリID、コンソールの設定画面から確認
- testers: テスターのアドレス
- release_note: リリースノート(任意項目)
- firebase_cli_path: 後述
testersには、テスターグループを設定できない説。
自分が調べた限りでは見つかりませんでした。ここはグループを設定したい。
補足: firebase_cli_pathについて
FirebaseのCLIのpathです。そのまんまですね。
プロジェクトファイルにpackage.json
が入ってない方へ。
以下の作業が必須となります。
一言でいうと、firebase-toolsを利用できるようにする必要があります。
firebase-toolsを使って、Firebase App Distributionへアップロードをするのです。
まずnpmのinitialize。package.jsonが作成されます。
※npmのセットアップについて今回は説明を省略します。
$ npm init
続いて、npmでfirebase-toolsをインストール。
$ npm install firebase-tools
これでfirebase-toolsがインストールされました。
node_modulesはgit管理する必要はないので、.gitigoreに追記しておきます。
node_modules/
これにより、FirebaseのCLIが用意されたことになります。
おそらく node_modules/.bin/firebase
になると思います。
これをfirebase_cli_pathに設定してあげれば良いわけです。
補足: Firebaseログイン
ターミナルでFirebaseログインできていなかったら、
コマンドを打ってもFirebase App Distributionへアップロードはできません。
事前にログインしておく必要があります。
下記コマンドを打って、ブラウザ上でログインしてください。
※コマンド実行には、firebase-toolsが必要です。
$ firebase login
ログインが完了すると、ターミナルに token
が表示されます。
これはBitriseで設定などする際に必要なので、どこかにメモしておいてください。
補足: fastlaneにプラグイン追加
fastlaneにfirebase_app_distributionプラグインを追加する必要があります。
$ fastlane add_plugin firebase_app_distribution
又は、
$ bundle exec fastlane add_plugin firebase_app_distribution
fastlaneコマンド実施
設定についての説明は以上です。
これで実行できれば良いのですが、まだまだ躓く可能性があります。
いくつかケースを以下に記載します。
困ったこと: "プロジェクト名.app" requires a provisioning profile with the Push Notifications feature.
Provisioning Profileがないという。
automatically manage signingの設定だったので、
対象のProvisioning Profileが作れてなかったのでした。。
BitriseでFirebase App Distributionにアップロードする方法
こちらがかなり参考になります。
https://qiita.com/xxminamixx/items/2d21bdb729d5c5d6717c
ただ自分の環境だと、別問題でなんかうまくいかない...
ちゃんと設定できたら記載したいと思います。
TBA(To Be Action)
Firebase App Distributionの使い勝手について
完全に個人的な印象ですが、記載しておきます。
- わりと使いやすい印象です。無料プランでも利用できるのでお手軽。
- 端末にアプリインストールする時間が結構かかるのは難点。
- DeployGateは使いやすいと思うので、使ってる方はわざわざ移行しなくても良いかも。
- FabricやBitriseなど使ってた方は移行した方が良さそう。
まとめ
少しでも皆さんの参考になれば幸いです。
参考
- 公式: Firebase コンソールを使用してテスターにiOSアプリをテスターに配布する
https://firebase.google.com/docs/app-distribution/ios/distribute-console - 公式: fastlaneでFirebase App Distributionにアップロード
https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane - Bitrise公式: iOS Auto Provision
https://devcenter.bitrise.io/jp/code-signing/ios-code-signing/ios-auto-provisioning/ - Bitrise公式: Apple DeveloperアカウントをBitriseと連携させる
https://devcenter.bitrise.io/jp/getting-started/connecting-apple-dev-account/ - fastlane公式: gym
https://docs.fastlane.tools/actions/gym/ - fastlane公式: Building your app
https://docs.fastlane.tools/getting-started/ios/beta-deployment/ - [iOS] Firebase App Distributionを使用してiOSアプリを配布する
https://dev.classmethod.jp/smartphone/ios-firebase-distribution/ - Could not find transporter at /Applications/Xcode-beta.app/Contents/Developer/
https://stackoverflow.com/questions/57754658/xcode-11-fastlane-deliver-failed - https://qiita.com/nokono/items/733bb32bf7cc899fe79c
- https://qiita.com/koogawa/items/fb89c1ae8ff6913a184d
- https://qiita.com/Yoshipe/items/f89449b716968a59e57d