Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOSアプリを社内配信する場合の工夫

 iOSアプリを社内配信する場合の工夫

2021/03/24 ANDPAD TechLive #8 iOS/AndroidアプリエンジニアTalk!!

ANDPAD inc

March 24, 2021
Tweet

More Decks by ANDPAD inc

Other Decks in Programming

Transcript

  1. この発表で話すこと 1 回のビルドでTestFlight, Firebase AppDistribution の両⽅にデプ ロイする⽅法 .xcarchive と .ipa

    と .app の違い simulator ⽤のアプリを配布する⽅法 話さないこと ビルド時間を短くするための設定やコードの書き⽅ 3
  2. TestFlight vs Firebase AppDistribution TestFlight ( 内部テスター ) Firebase AppDistribution

    端末台数制限 30 台/1user 年間100 台※ ユーザー数制限 100 ⼈ 制限なし デプロイにかかる時間 処理待ちがある 即時 Export Method app-store adhoc ※ ADP のAdHoc 配信上の制限 結論 : どっちにもデプロイしたい 5
  3. ということは、 2 回ビルドする? 各配布⽅法ごとに.ipa が必要 ExportMethod が違うだけなら、ビルドは 1 回で⼤丈夫 1.

    archive (ビルド)して .xcarchive を作成 2. method を指定してexport し、 .xcarchive から .ipa を作る × 2 回 export はビルドするより短い時間で実⾏可能 3. .ipa をそれぞれにアップロードする 6
  4. .xcarchive/.ipa/.app の関係 .app = 実⾏可能なアプリ .xcarchive = .app + dSYM

    .ipa = 配布可能なアプリ .app にCodeSign したもの(をzip に固め ている)
  5. fastlane で export する⽅法 # Fastfile archive_path = build_ios_app( #

    or gym skip_package_ipa: true # export を skip する ) xcodebuild( export_archive: true, archive_path: archive_path, export_path: ipa_path, # この path に出⼒される export_options_plist: "./exportOptions-testflight.plist" # !! これが重要 ) # export_options_plist を変えて再度 export する
  6. exportOptionsPlist で設定できること ExportMethod (app-store, ad-hoc, development) ProvisioningProfile Bitcode, iCloud 接続先などの設定

    詳しくはターミナルで xcodebuild -h を実⾏ できないこと BuildSettings の変更 Bundle ID の変更
  7. fastlane で .app を作る⽅法 # Fastfile SCHEME = "MyApp" xcodebuild(

    scheme: SCHEME, configuration: "Debug", sdk: "iphonesimulator", # !! ここが重要 derivedDataPath: derived_data_path # 指定したパスに出⼒されるので ) # DerivedData の中から .app を掘り出す app_path = "../#{derived_data_path}/Build/Products/Debug-iphonesimulator/#{SCHEME}.app"
  8. Appendix: simulator 向けにうまくビルドできない場合 BuildSettings にアーキテクチャの設定が必要かも "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; # Podfile

    post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end