mcpField
H
hz-android-2d-porting

hz-android-2d-porting

github.com/meta-quest開発241181 回インストール5 週間前に更新
リポジトリ

hz-android-2d-porting について

既存の Android 2D アプリを Meta VR ヘッドセットへ移植する開発スキルです。Horizon OS のパネル向け入力、レイアウト、互換性の確認からテスト、ストア申請準備までを案内します。

主な機能

  1. 01初回インストールと起動テスト
  2. 02依存関係と権限の互換性確認
  3. 03コントローラーとハンド入力の適応
  4. 04リサイズ可能なパネル向けレイアウト
  5. 05ビルド設定とマニフェストの更新
  6. 06デバイステストとストア申請確認

活用シーン

  1. 01Android アプリの Horizon OS 互換性評価
  2. 02パネルでの入力やレイアウトの問題調査
  3. 03Meta VR ヘッドセット向けアプリの調整
  4. 04Horizon Store 申請の準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/meta-quest/agentic-tools --skill hz-android-2d-porting

インストール後、Claude Code で/hz-android-2d-portingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
compatibility-requirements.md
gradle-setup.md
input-adaptation.md
panel-layout.md

詳細

Horizon OS への Android 2D アプリの移植

使用する場面

次のような場合に、このスキルを使用します。

  • 既存の Android 2D アプリを Meta VR ヘッドセットで動作するように移植する
  • モバイル Android アプリを Horizon OS のパネルに対応させる
  • Meta VR デバイス上の 2D アプリで、入力、レイアウト、互換性の問題をトラブルシューティングする
  • Horizon Store への Android アプリの申請準備をする
  • 既存の Android アプリが Horizon OS と互換性があるか評価する

概要

Horizon OS は Android(AOSP)を基盤としており、3D 空間に配置されるフローティング 2D ウィンドウであるパネル内で、標準的な Android アプリケーションを実行できます。適切に構築された Android アプリの多くは、最小限の変更で Meta VR デバイス上でも動作しますが、いくつかの点に注意が必要です。

  1. 入力:タッチスクリーンはありません。ユーザーはコントローラーポインター(レイキャスティング)、ハンドトラッキング、または接続した周辺機器を使用して操作します。
  2. レイアウト:アプリは固定ディスプレイで全画面表示されるのではなく、サイズ変更可能なパネルで実行されます。
  3. 互換性:Google Play Services がなくても、または利用できないハードウェアがなくても、依存関係と権限が正常に動作する必要があります。
  4. デザインとパフォーマンス:アプリはモバイルハードウェア上で Horizon Store の要件を満たす必要があります。

移植の目的は、既存の機能を維持しつつ、アプリを Meta VR のエクスペリエンスに自然に溶け込ませることです。

移植ワークフロー

ステップ 1:初期テスト

通常の Android ワークフローで既存のアプリをビルドしてインストールします。Android Studio、Gradle、adb は、接続した Meta VR デバイスで使用できます。

./gradlew installDebug
adb shell am start -n com.example.yourapp/.MainActivity

ここでは生の adb よりも metavr app install <apk> と metavr app launch <package> を優先し、初回起動中は metavr adb logcat --follow でログをストリーミングしてください。すぐに発生するクラッシュ、黒い画面、入力の問題、レイアウトの崩れがないか確認します。

ステップ 2:互換性の監査

UI を変更する前に、アプリが Google Play Services、サポート対象外のハードウェア、または禁止されている権限に依存していないか確認します。サポートされない機能はオプションにするか、Horizon OS の代替機能に置き換えてください。互換性要件を参照してください。

ステップ 3:入力の適応

移植で最もよくある問題は入力です。タッチイベントはコントローラーポインターから変換されますが、次の点に注意してください。

  • ホバー状態が表示されます(ユーザーはクリックする前にポインターを合わせます)
  • スクロールにはスワイプ操作ではなくサムスティックを使用します
  • マルチタッチ操作(ピンチしてズーム)はそのままでは反映されません
  • タップ対象はポインターの精度に合わせて十分な大きさが必要です(最小 48dp)

詳しいガイダンスについては、入力適応リファレンスを参照してください。

ステップ 4:レイアウトの調整

パネルはサイズ変更が可能で、さまざまなアスペクト比にできます。アプリは次の項目に対応する必要があります。

  • 幅と高さの動的な変更
  • 横向きと縦向き
  • 異なる実効 DPI 値

レスポンシブな Android レイアウトとウィンドウサイズのブレークポイントを使用してください。パネルレイアウトリファレンスを参照してください。

ステップ 5:Gradle とマニフェストの更新

Horizon OS を対象とするよう、ビルド設定を更新します。

// build.gradle.kts
android {
    defaultConfig {
        minSdk = 29       // Android 10 minimum
        targetSdk = 34    // API 34 or higher required for all new 2D panel apps
    }
}

デバイスのターゲティングに必要なマニフェストエントリーを追加してください。Gradle セットアップリファレンスを参照してください。

ステップ 6:入力テスト

サポートされているすべての入力方法でテストします。

  • コントローラー:ポインティングとクリック、サムスティックでのスクロール、トリガーでのタップ
  • ハンドトラッキング:ピンチで選択、手でのスクロール
  • キーボード/マウス:Bluetooth 周辺機器、テキストフィールド用のシステムキーボード

デスクトップでの反復作業には Meta Spatial Simulator を使用し、その後、Meta Horizon OS Android Studio プラグインまたは通常の ADB ツールで実機検証します。入力テストを行うたびに metavr adb logcat --follow を実行しておいてください。画面上ではクラッシュとして見えない入力エラーを検出できます。

ステップ 7:ストアへの申請

Horizon Store に申請する前に、次の項目を確認してください。

  • すべての互換性要件を満たしていることを確認する
  • Quest 3、Quest 3S、Quest 2(対象とする場合)に加え、Meta VR Glasses でもテストする
  • パススルー環境とイマーシブホーム環境の両方でアプリが動作することを確認する
  • Meta のコンテンツポリシーと技術要件を確認する

互換性のクイックチェック

Horizon OS で動作します
機能状態備考
標準 Android ビュー対応TextView、RecyclerView など
Jetpack Compose対応Compose UI ツールキット全体
React Native対応標準の Android アプリケーションパスを使用
WebView対応Chromium ベース
メディア再生(ExoPlayer)対応動画と音声
ネットワーク(HTTP、WebSocket)対応Wi-Fi 接続
Room / SQLite対応ローカルデータベース
WorkManager対応バックグラウンドタスク
通知対応Horizon OS の通知パネル
Bluetooth(周辺機器)対応キーボード、マウス、ゲームパッド
Android アクセシビリティ API対応TalkBack 相当の機能を利用可能
制限あり、または利用不可
機能状態備考
電話機能 / SMS利用不可携帯電話無線機能がありません
NFC利用不可NFC ハードウェアがありません
GPS / 高精度位置情報制限ありWi-Fi ベースの位置情報のみ
指紋認証 / BiometricPrompt利用不可代わりに Meta アカウント認証を使用してください
アプリが所有する複数パネル制限あり利用可能になったら、現行の公開されている複数パネルのガイダンスを使用してください
Google Play Services利用不可Meta の同等サービスまたは代替手段を使用してください
ARCore利用不可空間機能には Meta Spatial SDK を使用してください
マルチタッチジェスチャー制限ありコントローラーからのポインターは 1 つのみ
よくある問題と解決方法
問題原因解決方法
アプリの起動時にクラッシュするGoogle Play Services の依存関係が不足しているGMS を削除するか、任意にします
ボタンが小さすぎてタップできないタッチ対象が 48dp 未満タップ対象の最小サイズを大きくします
キーボードが表示されないカスタム入力フィールドが InputConnection を使用していない標準の EditText または TextField を使用します
レイアウトが崩れる固定サイズのレイアウトを前提としているレスポンシブなビューまたは Compose レイアウトを使用します
アプリが利用できない権限を要求する電話機能、NFC、その他の存在しないハードウェアhasSystemFeature() チェックで保護します
禁止された権限が原因で APK が拒否されるライブラリまたはプラグインが禁止された権限を暗黙的に追加したaapt dump permissions your-app.apk を実行し、禁止リストを確認します
無効な署名が原因で APK が拒否されるv1 のみの方式で署名されているAGP 7.0 以降では v2 署名がデフォルトです。古い AGP では署名設定に v2SigningEnabled = true を追加します

テストツール

  • Meta Horizon OS Android Studio plugin:デバイス接続、デプロイ、Horizon OS 開発サポート
  • Meta Spatial Simulator:Horizon OS 上の 2D Android アプリ向けデスクトップシミュレーション
  • Android Studio、Gradle、ADB:標準的な Android のビルド、インストール、起動、logcat のワークフロー
  • metavr:デバイスやアプリの操作に便利な、任意のコマンドラインツール

パフォーマンスに関する考慮事項

Meta VR デバイスは、厳しい熱制限のあるモバイルクラスのハードウェアを搭載しています。

  • GPU:Qualcomm Adreno(モデルによって異なります)
  • RAM:システムとアプリで共有する 6~12 GB
  • 熱:高負荷が続くと、サーマルスロットリングが発生することがあります
  • 2D UI では、過剰なオーバードローや複雑なシェーダーエフェクトを避けてください
  • 消費電力を抑えるため、バックグラウンド処理を最小限にしてください
  • 実際の使用状況を反映したデータ量(大きなリスト、画像など)でテストしてください

参考資料

コメント