LoginSignup
3
1

More than 3 years have passed since last update.

fastlaneでIn-Houseで配布するコマンドを作る

Last updated at Posted at 2020-02-28

 開発しているアプリを実機で確認したい場合、通常は、「iOS Developer Program」の「Certificates,Identifiers & Profiles」から、実機登録を行なって、AdHoc配信でインストールするかと思いますが、開発者が多い場合や、イベントの時だけなど、端末を登録したくない理由がいろいろ出てくると思います。
この場合に、もし、エンタープライズライセンスを持っている場合は、社内向けに配布ができる、In-Houseという配信方法があるので、それを活用して、開発中のアプリをインストールできるようにすると便利です。

ただ、In-House配信も簡単にとはいかないので、これもfastlaneのコマンド一発で、crashlytics もしくは、Firebase App Distribution までアップロードし配布できるようにすると、かなり運用が便利になります。
必要あれば、CircleCIなどのCIサーバーに、自動で実行するジョブをセットすれば、もっと楽になります。

この場合に問題になるのが、証明書やProvisioningProfileやTeamIDなどを、ビルドの際に指定する必要があって、非常に煩わしいので、メモがてら残して置こうと思います。

自分は、以下のようにfastlaneのコマンドを作成しました。



desc "Deploy a new version of In-House to the Crashlytics Beta "
lane :inhouse do
  # Download and install certificate
  if is_ci?
    match(
      type: 'enterprise',
      keychain_name: keychain[:name],
      keychain_password: keychain[:password],
      app_identifier: ENV["IN_HOUSE_APP_ID"],
      team_id: ENV["IN_HOUSE_TEAM_ID"],
      force_for_new_devices: true
    )
  else
    match(
      type: 'enterprise',
      app_identifier: ENV["IN_HOUSE_APP_ID"],
      team_id: ENV["IN_HOUSE_TEAM_ID"],
      force_for_new_devices: true
    )
  end

  # Update build number
  increment_build_number

  ## Change application icon to beta version
  add_badge(alpha: true)

  # enterpriseを指定してビルド
  build_app(configuration: ENV["IN_HOUSE_CONFIGURATION"], export_method: "enterprise")

  // TODO: crashlytics もしくは、Firebase App Distribution で配布
  ...
end

これを、direnvを使って、環境変数をセットしています。

export IN_HOUSE_APP_ID="AppID"
export IN_HOUSE_CONFIGURATION ="inHouse"
export IN_HOUSE_TEAM_ID="**********"
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1