Add a Steam Frame build type with the Khronos OpenXR loader

The Frame runs Android apps in a container (Lepton) that has no OpenXR
loader broker, so the APK needs its own loader. This adds a "frame" build
type: ./gradlew assembleFrame.

It's release plus:
- applicationId .frame, minSdk 30 (the container is Android 11)
- a manifest overlay that drops the headtracking requirement and the
  Quest/Pico metadata, since the install fails with it
- the Khronos loader 1.1.63, fetched from Maven Central at build time,
  checked against a SHA-256 and unpacked into build/ (not committed)
- L1VR_STEAM_FRAME for the native code, BuildConfig.STEAM_FRAME for Java

Quest builds don't see any of this. I also added the gradle wrapper script
to Projects/Android, since the wrapper jar and properties were already
there, and -Wall for the VR sources.

Haven't run it on the headset yet.
This commit is contained in:
Madison committed 2026-10-04 18:36:18 +09:00
1 parent 99a0d62ebb
commit b3058f76f6
8 files changed
+407 -7

No files matched your search

@@ -49,13 +49,26 @@ import static android.system.Os.setenv;
manufacturer = "meta";
}
try
if (BuildConfig.STEAM_FRAME)
{
//Load manufacturer specific loader
System.loadLibrary("openxr_loader_" + manufacturer);
setenv("OPENXR_HMD", manufacturer, true);
} catch (Exception e)
{}
//The Frame has no loader broker, so the Khronos loader is in the APK
System.loadLibrary("openxr_loader");
try
{
setenv("OPENXR_HMD", "steamframe", true);
} catch (Exception e)
{}
}
else
{
try
{
//Load manufacturer specific loader
System.loadLibrary("openxr_loader_" + manufacturer);
setenv("OPENXR_HMD", manufacturer, true);
} catch (Exception e)
{}
}
System.loadLibrary( "xash" );
}