Save 37% off PRO during our Black Friday Sale! »

リモートワークでBitriseを導入したときにハマりにハマった話

E586b46d5b09f8109beb66bb146e4f20?s=47 tamappe
October 01, 2020

 リモートワークでBitriseを導入したときにハマりにハマった話

前々からチーム内でBitriseを使ってアプリ配信をしたかったのですが、
既存アプリで設定の仕方が分からなかったのでなかなか導入することができませんでした。

大きな問題となっていたのは、弊社アプリが
- 環境別にApp IDを設定していたこと
- Build Configurationで環境別のマクロを設定していたので当然環境別の配信スキームを用意したい
- 全ての環境で同一のKeychainを使っていたが、環境別でKeychainを設定したいという要望
- AppExtentionも使っていたこと
- plistが環境別にDebugとAdhoc用とで分かれている
- ついでにAppStoreへの自動アップロードも整備したい

問題を上げたらキリがないですが、Bitriseを導入する上で上記の問題がありました。
さらに私はProvisioning Profileの知識が乏しかったので、
BitriseのAutoProvisioningがスキーム別に対応できるのかどうかもこの時は正確には把握できていませんでした。
その状況で3月下旬に社内でリモートワーク導入の連絡が入って急遽、強制的にBitrise配信をできるようにしないといけなくなり
急いでBitriseでアプリの配信をできる環境整備に取り掛かりました。

リモートワークまでにBitriseでビルドできるようにまでは設定できるようになりましたが、
なぜかアプリ起動後にクラッシュするというような問題が発生したりでその原因調査に時間がかかりました。
本セッションでは、上記の問題たちをどのように解決していったのか、そして完成した配信スキームを紹介しようと思います。

E586b46d5b09f8109beb66bb146e4f20?s=128

tamappe

October 01, 2020
Tweet

Transcript

  1. ϦϞʔτϫʔΫͰBitriseΛಋೖͨ͠ ͱ͖ʹϋϚΓʹϋϚͬͨ࿩ Bitrise meetup 2020/10/01 Tamappe @tamapppe

  2. I N T R O D U C T I

    O N Tamappe ϞόΠϧΞϓϦΤϯδχΞ 2014೥-2019೥3݄·ͰϑϦʔϥϯεͱͯ͠׆ಈ 2019೥4݄ΑΓϨΞδϣϒʹϞόΠϧΞϓϦΤϯδχΞͱͯ͠ೖࣾ झຯ: ϒϩάͷߋ৽ɺσΟζχʔ८Γ(ίϩφʹΑΓࣗॗ) Qiita: https://qiita.com/tamappe Blog: https://tamappe.com Twitter: https://twitter.com/tamapppe גࣜձࣾϨΞδϣϒ
  3. None
  4. ຊ೔ͷςʔϚ ϦϞʔτϫʔΫͰ Bitriseಋೖ࣌ʹϋϚͬͨ࿩

  5. BitriseಋೖλΠϛϯά 2020೥3݄຤

  6. ಥવͷۓٸࣄଶએݴ

  7. ߸ྩ ςετΞϓϦ഑৴ͷͨΊʹ Bitriseಋೖ͢Δͧʔ

  8. Bitriseಋೖ͢Δ্ͰͷπϥΠ੍໿ ϋϚͬͨઃఆ 1. App IDͷ࿩ 2. ؀ڥผͷ഑৴εΩʔϜΛߏங͍ͨ͠ 3. ؀ڥผʹKeychainΛઃఆ͍ͯ͠Δ 4.

    AppExtension (Widget Extension)΋࢖͍ͬͯΔ৔߹ 5. Plist ͕؀ڥผ + Debug༻ͱ Adhoc༻ʹ෼཭͞Ε͍ͯΔ 6. App Store ΁ͷࣗಈΞοϓϩʔυͷߏங
  9. ͱΓ͋͑ͣɾɾɾ

  10. ΋͏Ұ౓ʮ΍Εʯͱ ݴΘΕͯ΋ʮͰ͖Δؾ͕͠ͳ͍ʯ

  11. ͦͷલʹɾɾɾ ࠓճͷ͓࿩͸ϕετϓϥΫςΟεͷ࿩Ͱ͸͋Γ·ͤΜɻ ઃܭ͕ෳࡶͳطଘϓϩδΣΫτʹBitriseΛ ແཧ΍Γಋೖͨ͠ͱ͖ͷ࿩Ͱ͢ɻ

  12. ࠓճͷ࿩͸Ϗϧυ͍ͯ͠Δ͜ͱ͕લఏ https://www.youtube.com/watch?v=1oR_vjGdAo0

  13. YouTube νϟϯωϧ

  14. 1. App IDͷ࿩ App ID

  15. 1. App IDͷ࿩ ͜Εઆ໌Ͱ͖·͔͢ʁ

  16. 1. App IDͷ࿩ ͜Εઆ໌Ͱ͖·͔͢ʁ => Bundle Identifier ?

  17. 1. App IDͷ࿩ ͜Εઆ໌Ͱ͖·͔͢ʁ => Bundle Identifier ? ਖ਼ղͰ͢ʂ

  18. 1. App IDͷ࿩ (Rarejob ͷApp ID)

  19. 1. App IDͷ࿩ ? ? ?

  20. 1. App IDͷ࿩

  21. 2. ؀ڥผͷ഑৴εΩʔϜΛߏங͍ͨ͠

  22. 2. ؀ڥผͷ഑৴εΩʔϜΛߏங͍ͨ͠ Scheme: ଟ͍ Target: গͳ͍ ໰୊఺

  23. Bitrise ͰͷରԠ ؀ڥม਺ Env vars λϒΛઃఆ͢Δ

  24. Bitrise ͰͷରԠ Env Vars (؀ڥม਺)

  25. 3. ؀ڥผʹKeychainΛઃఆ͍ͯ͠Δ ؀ڥ 1. Rarejob 2. Adhoc 3. Staging 4.

    Staging1 5. Staging2 ؀ڥผKeychain 1. ຊ൪؀ڥ 2. ຊ൪؀ڥ 3. Staging؀ڥ 4. Staging1؀ڥ 5. Staging2؀ڥ
  26. 3. ؀ڥผʹKeychainΛઃఆ͍ͯ͠Δ App ID App ID App ID App ID

    App ID Group ID Group ID Group ID Group ID Group ID
  27. 3. ؀ڥผʹKeychainΛઃఆ͍ͯ͠Δ entitlement ͷઃఆ

  28. 3. ؀ڥผʹKeychainΛઃఆ͍ͯ͠Δ

  29. 3. ؀ڥผʹKeychainΛઃఆ͍ͯ͠Δ

  30. 4. AppExtension΋࢖͍ͬͯΔ৔߹ ݁࿦͔Β

  31. 4. AppExtension΋࢖͍ͬͯΔ৔߹ ࣺͯ·ͨ͠ (bundle identifier ͷ૊Έ߹Θ͕ͤπϥΠ)

  32. 4. AppExtension΋࢖͍ͬͯΔ৔߹ ຊମ: com.sample.app Widget: com.sample.app.widget ͜ΕΛ؀ڥผʹ੔͑Δ

  33. 5. Plist ͕؀ڥผ + Debug༻ͱ Adhoc༻ʹ෼཭ ໰୊ͳ͠

  34. 5. Plist ͕؀ڥผ + Debug༻ͱ Adhoc༻ʹ෼཭͞Ε͍ͯΔ

  35. 5. Plist ͕؀ڥผ + Debug༻ͱ Adhoc༻ʹ෼཭͞Ε͍ͯΔ Build Setting info.plist

  36. 6. App Store ΁ͷࣗಈΞοϓϩʔυͷߏங

  37. 6. App Store ΁ͷࣗಈΞοϓϩʔυͷߏங

  38. 6. App Store ΁ͷࣗಈΞοϓϩʔυͷߏங

  39. 6. App Store ΁ͷࣗಈΞοϓϩʔυͷߏங Ξοϓϩʔυ༻ ຊ൪༻ͷεΩʔϜΛࢦఆ͢Δ

  40. 6. App Store ΁ͷࣗಈΞοϓϩʔυͷߏங

  41. BitriseͰͷworkflowͷߏஙखॱ ɾStaging-Manual-provisioning ↓ ɾStaging-Auto-provisioning ↓ ɾAdhoc-Manual-provisioning ↓ ɾAdhoc-Auto-provisioning ↓ ɾAppStore-Upload

  42. BitriseͰͷworkflow ɾproduction-app-store ɾprod-adhoc-auto-provision ɾproduction-adhoc ɾstg-adhoc-auto-provision ɾstg1-adhoc-auto-provision ɾstg2-adhoc-auto-provision ɾstg-adhoc ɾstg1-adhoc ɾstg2-adhoc

    ɾຊ൪؀ڥ AppStore ɾຊ൪؀ڥ Φʔτ ɾຊ൪؀ڥ ϚχϡΞϧ ɾstg Φʔτ ɾstg1 Φʔτ ɾstg2 Φʔτ ɾstg ϚχϡΞϧ ɾstg1 ϚχϡΞϧ ɾstg2 ϚχϡΞϧ
  43. ิ଍ (Bitriseଆͷςετ୺຤ͷొ࿥)

  44. ·ͱΊ ϋϚͬͨઃఆ 1. App IDͷ࿩ 2. ؀ڥผͷ഑৴εΩʔϜ 3. ؀ڥผʹKeychainͷઃఆ 4.

    AppExtension΋࢖͍ͬͯΔ৔߹ 5. Plist ͕؀ڥผ + Debug༻ͱ Adhoc༻ 6. App Store ΁ͷࣗಈΞοϓϩʔυ ϋϚͬͨઃఆ Bundle Identifier ΛݟΔ Build Setting ͰϚϧνରԠ App Group ͱentitlement ʹ஫ҙ ࣺͯΔ (࡟আ) Build Setting Ͱઃఆ App Store ΁ͷࣗಈΞοϓϩʔυ
  45. ٕज़ධ࿦͕ࣾൃץ͍ͯ͠ΔࡶࢽʰSoftware DesignʱͷFlutterಛूͰࣥච͢Δ͜ ͱʹͳΓ·ͨ͠ɻಛूͰ͸ϞόΠϧΞϓϦΤϯδχΞ޲͚ʹFlutterͷັྗΛ 200%ͷ੎͍Ͱ఻͑·͢ɻ10/18ൃץͷ11݄߸Ͱܝࡌɻ ࡶࢽʰSoftware Designʱ(10/18)Ͱࣥච

  46. Thank you!