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

AppleVisionProCICD

Avatar for Graffity Graffity
August 02, 2024

 AppleVisionProCICD

Avatar for Graffity

Graffity

August 02, 2024
Tweet

More Decks by Graffity

Other Decks in Programming

Transcript

  1. 登壇者情報 Graf fi ty(ג) ॴଐUnityΤϯδχΞ
 ઐ໳ྖҬɿα΢ϯυϓϩάϥϛϯά UnityΛத৺ͱͨ͠৘ใൃ৴ͳͲΛߦ͍ͬͯ·͢ɻ 2 Unity CI/CD

    完全に理解した 勉強会 著書&査読協 力 @8bitdots https://qiita.com/Cova8bitdot @cova8bit.bsky.social
  2. 3

  3. Apple Vision Pro はEyeTracking とTapジェスチャーを 用 いて選択操作を 行 うデバイスです 4

    はじめに ※プライバシー保護の観点から視線ベクトルは取得不可 ※視線が当たったら初めてObject情報を取得できます
  4. Vision Pro のアプリインストール 方 法 12 はじめに • PCと無線でペアリング •

    Xcode でBuild するとそのままアプリが転送 • デバイス左側に開発者向けのUSB-Cポートの備えた モジュールもAppleDeveloper限定で販売 • ¥52,800 • ちなみにUSB-2.0と同等の転送速度 • 普通の開発フローではDeployフローが毎回 手 動
  5. Vision Pro のアプリインストール 方 法 13 はじめに • PCと無線でペアリング •

    Xcode でBuild するとそのままアプリが転送 • デバイス左側に開発者向けのUSB-Cポートの備えた モジュールもAppleDeveloper限定で販売 • ¥52,800 • ちなみにUSB-2.0と同等の転送速度 • 普通の開発フローではDeployフローが毎回 手 動 App Vision Pro 開発のCI/CDって効率化できないの?
  6. Xcodebuild の引数がvisionOS向けに正しく設定しないとArchiveが作れません このようなBuildScriptを叩いてArchiveを作ろうとしますが 25 Xcodebuild で ipa を作成 BUILD_PATH=先ほどのUnityの出 力

    先Pathを設定 xcodebuild archive clean \ -project ${BUILD_PATH}Unity-VisionOS.xcodeproj \ -scheme Unity-VisionOS \ -archivePath ${BUILD_PATH}app \ -con fi guration Release ENABLE_BITCODE=NO DEVELOPMENT_TEAM=YOUR_TEAM_ID \ -allowProvisioningUpdates \ -destination 'generic/platform=visionOS' GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS IL2CPP_LARGE_EXECUTABLE_ARM_WORKAROUND=1'
  7. Xcodebuild の引数がvisionOS向けに正しく設定しないとArchiveが作れません 以下のようなエラーでArchive作成に失敗します ※IDE 上では問題なくArchiveを作成できます 26 Xcodebuild で ipa を作成

    ** Please also include the output of `xcrun simctl diagnose` and `xcode-select -p`. Underlying Errors: Description: Failed to fi nd a suitable device for the type IBSimDeviceTypeiPad2x (com.apple.dt.Xcode.IBSimDeviceType.iPad-2x) with runtime visionOS 2.0 (2.0 - 22N5277f) - com.apple.CoreSimulator.SimRuntime.xrOS-2-0 Failure Reason: Failed to create new simulator device in set SimDeviceSet : /Users/developer/Library/ Developer/Xcode/UserData/IB Support/Simulator Devices that matches IBSimDeviceTypeiPad2x (com.apple.dt.Xcode.IBSimDeviceType.iPad-2x) for runtime visionOS 2.0 (2.0 - 22N5277f) - com.apple.CoreSimulator.SimRuntime.xrOS-2-0 (Incompatible device). Available devices: ( ) Underlying Errors: Description: Incompatible device ** ARCHIVE FAILED **
  8. Xcodebuild の引数がvisionOS向けに正しく設定しないとArchiveが作れません 27 Xcodebuild で ipa を作成 BUILD_PATH=先ほどのUnityの出 力 先Pathを設定

    xcodebuild archive clean \ -project ${BUILD_PATH}Unity-VisionOS.xcodeproj \ -scheme Unity-VisionOS \ -archivePath ${BUILD_PATH}app \ -con fi guration Release ENABLE_BITCODE=NO DEVELOPMENT_TEAM=YOUR_TEAM_ID \ -allowProvisioningUpdates \ -destination ‘generic/platform=xros’ -sdk 'xros1.1' ①platform はvisionOS じゃなくて xros ②sdk でxros(=visionOS) のバージョンを設定 以下のように修正します
  9. おそらくXcode側のバグかと思われますがXcode16beta3 現在ではビルドに失敗します 28 Xcodebuild で ipa を作成 • Apple にはFeedbackAssistantでバグレポート済み

    • マシン環境によってXcode15.3 を 入 れてても成功したり失敗したりする • 自 分のマシンはNG。会社のビルドマシンでは成功した • 自 分のマシンはXcode16b3を 入 れていたので 干 渉した可能性あり • ここについては要追加検証
  10. 現状:開発 用 →Firebase AppDistribution 現状よくあるアプリ配布だと以下のサービスがあります 1. TestFlight • 内部テスター配布ならこちらがオススメ •

    DeviceIDの登録上限数の問題あり 2. Deploygate • iOS/Android だとよく使う • VisionOS 用 ipaは 非 対応 3. Firebase AppDistribution • VisionOS 用 ipa も対応!! • TestFlight だとBranch毎にビルドを分けて管理みたいな運 用 をしづらい &アプリページ作る 手 間がかかる 30 アプリを配布
  11. Firebase AppDistribution でのアプリ配布 方 法は公式Docが超丁寧なので公式に従おう • Firebase CLIリファレンス でCLI環境を導 入

    https:// fi rebase.google.com/docs/cli?hl=ja#install_the_ fi rebase_cli • Firebase AppDistribution のiOSアプリ配布のフローに従って配布準備 https:// fi rebase.google.com/docs/app-distribution/ios/distribute-cli?hl=ja 31 アプリを配布
  12. Firebase AppDistribution でのアプリ配布 方 法は公式Docが超丁寧なので公式に従おう • 以下のような upload.sh を 用

    意します • 下記のような形で実 行 することでipaをアップロードさせます $ git log -1 --format=%H | xargs sh upload.sh appname.ipa branch_name 32 アプリを配布 FIREBASE_TOKEN=“CLIでFirebaseにログインした時に発 行 されるものを利 用 " APP_ID="アプリページの設定画 面 からとってくる" BRANCH_NAME=$2 COMMIT_HASH=$3 fi rebase appdistribution:distribute $1 \ --token “${FIREBASE_TOKEN}” \ --app "${APP_ID}" \ --release-notes "${BRANCH_NAME} : ${COMMIT_HASH}" \ --groups "アプリページで作ったデバッググループ名" \ --debug
  13. まとめ:VisionPro 向けアプリビルドの完全 自 動化はなんとか可能! • UnityのBatch Build は問題なし • Xcode側の

    ipa 作成部分は環境によっては完全 自 動化も可能 • Xcode15.3 で引数を正しく設定すれば可能 • 環境によっては同 一 コマンドでも実 行 されない場合有り • Apple側にもFeedbackAssistantで報告済み • アプリ配布はFirebase AppDistribution ならVisionPro 向けにも配布可能 33 最後に