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

AppleVisionProCICD

Graffity
August 02, 2024

 AppleVisionProCICD

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 最後に