skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
meta-quest/agentic-tools164 installs

hz-android-2d-porting

Guides porting existing Android 2D apps to Meta VR and Horizon OS — input adaptation, panel layout, and design requirements. Use when adapting a mobile Android app for Meta VR. For UI design decisions, use hz-panel-designer if available. Build path: Standard Android; use hz-quest-verify-first if the build path is unclear.

How do I install this agent skill?

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

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    This skill provides safe and standard guidance for porting Android applications to Horizon OS. It utilizes official vendor tools and standard Android development practices.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

  • Runlayerpass

    1/5 files flagged

  • ZeroLeakspass

    Score: 93/100 · 2 sections analyzed

What does this agent skill do?

Android 2D App Porting to Horizon OS

When to Use

Use this skill when:

  • Porting an existing Android 2D app to run on Meta VR headsets
  • Adapting a mobile Android app for Horizon OS panels
  • Troubleshooting input, layout, or compatibility issues with a 2D app on Meta VR devices
  • Preparing an Android app for Horizon Store submission
  • Evaluating whether an existing Android app is compatible with Horizon OS

Overview

Horizon OS is built on Android (AOSP) and can run standard Android applications inside panels -- floating 2D windows positioned in 3D space. Most well-built Android apps work on Meta VR devices with minimal changes, but several areas require attention:

  1. Input: There is no touchscreen. Users interact via controller pointer (ray-casting), hand tracking, or connected peripherals.
  2. Layout: Apps run in resizable panels, not full-screen on a fixed display.
  3. Compatibility: Dependencies and permissions must work without Google Play Services or unavailable hardware.
  4. Design and performance: Apps must meet Horizon Store requirements on mobile hardware.

The goal of porting is to make the app feel native to the Meta VR experience while preserving existing functionality.

Porting Workflow

Step 1: Initial Testing

Build and install the existing app with its normal Android workflow. Android Studio, Gradle, and adb all work with a connected Meta VR device:

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

Prefer metavr app install <apk> and metavr app launch <package> over raw adb here, then stream metavr adb logcat --follow during this first run. Note any immediate crashes, black screens, input problems, or layout breakage.

Step 2: Compatibility Audit

Check whether the app depends on Google Play Services, unsupported hardware, or prohibited permissions before changing its UI. Make unsupported features optional or replace them with Horizon OS alternatives. See Compatibility Requirements.

Step 3: Input Adaptation

The most common porting issue is input. Touch events are translated from the controller pointer, but:

  • Hover states are now visible (users point before clicking)
  • Scrolling uses the thumbstick, not swipe gestures
  • Multi-touch gestures (pinch-to-zoom) do not translate directly
  • Tap targets must be large enough for pointer accuracy (48dp minimum)

See Input Adaptation Reference for detailed guidance.

Step 4: Layout Adjustment

Panels are resizable and can have various aspect ratios. Your app must handle:

  • Dynamic width and height changes
  • Landscape and portrait orientations
  • Different effective DPI values

Use responsive Android layouts and window-size breakpoints. See Panel Layout Reference.

Step 5: Gradle and Manifest Updates

Update your build configuration to target 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
    }
}

Add required manifest entries for device targeting. See Gradle Setup Reference.

Step 6: Input Testing

Test with all supported input methods:

  • Controller: point-and-click, thumbstick scroll, trigger tap
  • Hand tracking: pinch-to-select, hand scroll
  • Keyboard/mouse: Bluetooth peripherals, system keyboard for text fields

Use the Meta Spatial Simulator for rapid desktop iteration, then validate on-device with the Meta Horizon OS Android Studio plugin or normal ADB tooling. Keep metavr adb logcat --follow running during each input pass — it catches input errors that don't visibly crash.

Step 7: Store Submission

Before submitting to the Horizon Store:

  • Verify all Compatibility Requirements
  • Test on at least Quest 3, Quest 3S, and Quest 2 (if targeting them), plus Meta VR Glasses
  • Confirm the app works in both passthrough and immersive home environments
  • Review Meta's content policies and technical requirements

Quick Compatibility Check

Works on Horizon OS

FeatureStatusNotes
Standard Android ViewsSupportedTextView, RecyclerView, etc.
Jetpack ComposeSupportedFull Compose UI toolkit
React NativeSupportedUses the standard Android application path
WebViewSupportedChromium-based
Media playback (ExoPlayer)SupportedVideo and audio
Networking (HTTP, WebSocket)SupportedWi-Fi connectivity
Room / SQLiteSupportedLocal database
WorkManagerSupportedBackground tasks
NotificationsSupportedHorizon OS notification panel
Bluetooth (peripherals)SupportedKeyboard, mouse, gamepad
Android Accessibility APIsSupportedTalkBack equivalent available

Restricted or Unavailable

FeatureStatusNotes
Telephony / SMSNot availableNo cellular radio
NFCNot availableNo NFC hardware
GPS / Fine locationLimitedWi-Fi-based location only
Fingerprint / BiometricPromptNot availableUse Meta account auth instead
Multiple app-owned panelsLimitedUse the current public multi-panel guidance when available
Google Play ServicesNot availableUse Meta equivalents or alternatives
ARCoreNot availableUse Meta Spatial SDK for spatial features
Multi-touch gesturesLimitedSingle pointer from controller

Common Issues and Fixes

IssueCauseFix
App crashes on launchMissing Google Play Services dependencyRemove or make GMS optional
Buttons too small to tapTouch targets under 48dpIncrease minimum tap target size
Keyboard doesn't appearCustom input field not using InputConnectionUse standard EditText or TextField
Layout brokenFixed-size layout assumptionsUse responsive Views or Compose layouts
App requests unavailable permissionsTelephony, NFC, or other absent hardwareGuard with hasSystemFeature() checks
APK rejected for prohibited permissionsLibrary or plugin silently added a prohibited permissionRun aapt dump permissions your-app.apk, then check prohibited list
APK rejected for invalid signatureSigned with v1-only schemev2 signing is default in AGP 7.0+; for older AGP, add v2SigningEnabled = true to your signing config

Testing Tools

  • Meta Horizon OS Android Studio plugin: Device connection, deployment, and Horizon OS development support
  • Meta Spatial Simulator: Desktop simulation for 2D Android apps on Horizon OS
  • Android Studio, Gradle, and ADB: Standard Android build, install, launch, and logcat workflows
  • metavr: Optional command-line convenience for device and app operations

Performance Considerations

Meta VR devices have mobile-class hardware with strict thermal limits:

  • GPU: Qualcomm Adreno (varies by model)
  • RAM: 6-12 GB shared between system and apps
  • Thermal: Sustained workloads may trigger thermal throttling
  • Avoid heavy overdraw and complex shader effects in 2D UI
  • Minimize background work to reduce power consumption
  • Test with representative data loads (large lists, images, etc.)

References

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/meta-quest/agentic-tools/hz-android-2d-porting">View hz-android-2d-porting on skillZs</a>