{"id":13733578,"url":"https://github.com/MozillaReality/FirefoxReality","last_synced_at":"2025-05-08T09:32:40.884Z","repository":{"id":37549432,"uuid":"117884741","full_name":"MozillaReality/FirefoxReality","owner":"MozillaReality","description":"INACTIVE - A fast and secure browser for standalone virtual-reality and augmented-reality headsets.","archived":true,"fork":false,"pushed_at":"2023-12-28T09:21:48.000Z","size":151660,"stargazers_count":770,"open_issues_count":3,"forks_count":217,"subscribers_count":66,"default_branch":"main","last_synced_at":"2024-11-15T02:34:22.704Z","etag":null,"topics":["inactive","unmaintained"],"latest_commit_sha":null,"homepage":"https://mzl.la/reality","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MozillaReality.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-01-17T19:47:04.000Z","updated_at":"2024-11-12T17:57:22.000Z","dependencies_parsed_at":"2023-01-31T06:15:57.523Z","dependency_job_id":"59a0f322-2432-4de7-b041-7a34b2e68ade","html_url":"https://github.com/MozillaReality/FirefoxReality","commit_stats":null,"previous_names":[],"tags_count":124,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MozillaReality%2FFirefoxReality","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MozillaReality%2FFirefoxReality/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MozillaReality%2FFirefoxReality/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MozillaReality%2FFirefoxReality/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MozillaReality","download_url":"https://codeload.github.com/MozillaReality/FirefoxReality/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253036736,"owners_count":21844269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["inactive","unmaintained"],"created_at":"2024-08-03T03:00:45.694Z","updated_at":"2025-05-08T09:32:37.480Z","avatar_url":"https://github.com/MozillaReality.png","language":"Java","readme":"# Firefox Reality\n\nThe goal of the Firefox Reality project is to create a full-featured browser exclusively for *standalone* AR and VR headsets.\n\nYou can find us in [#fxr:mozilla.org on the Matrix](https://chat.mozilla.org/#/room/#fxr:mozilla.org) ([Instructions for joining](https://wiki.mozilla.org/Matrix)), Twitter [@MozillaReality](https://twitter.com/mozillareality), and at [mixedreality@mozilla.com](mailto:mixedreality@mozilla.com).\n\n## Download developer APKs\n\n**[Download](https://community-tc.services.mozilla.com/tasks/index/project.firefoxreality/main)** developer APKs for Firefox Reality generated from latest [main](https://github.com/MozillaReality/FirefoxReality/commits/main).\n\n## Locale support\n\nFirefox Reality supports Chinese (China), Chinese (Taiwan), English, French, German, Italian, Japanese, Russian, and Spanish for user interface, voice search, and text entry. Localization is provided by Mozilla's amazing community of volunteer localizers.\n\nFor more info on localization, how it works in the Firefox Reality project, and how to correctly edit localizable text in the application, please see the [localization wiki page](https://github.com/MozillaReality/FirefoxReality/wiki/Localization).\n\n## Setup instructions\n\n*Clone FirefoxReality.*\n\n```bash\ngit clone git@github.com:MozillaReality/FirefoxReality.git\ncd FirefoxReality\n```\n\n*Clone the third-party repo.*\n\nIf you're developing for the Oculus, Snapdragon VR, or VIVE, you need to clone the repo with third-party SDK files.\n\n```bash\ngit clone git@github.com:MozillaReality/FirefoxReality-android-third-party.git third_party\n```\n\nThis repo is only available to Mozilla employees. If you have access to the relevant SDK but not this repo, you can manually place them here:\n\n - `third_party/ovr_mobile/` for Oculus (should contain a `VrApi` folder)\n - `third_party/wavesdk/` for Vive (should contain a `build` folder, among other things)\n\nThe [repo in `third_party`](https://github.com/MozillaReality/FirefoxReality-android-third-party) can be updated like so:\n\n```bash\npushd third_party \u0026\u0026 git fetch \u0026\u0026 git checkout main \u0026\u0026 git rebase origin/main \u0026\u0026 popd\n```\n\n*Fetch Git submodules.*\n\nYou may need to set up [two-factor authentication](https://blog.github.com/2013-09-03-two-factor-authentication/#how-does-it-work-for-command-line-git) for the command line.\n\n```bash\ngit submodule update --init --recursive\n```\n\nYou can build for different devices:\n\n- **`oculusvr`**: Samsung Gear VR \u0026 Oculus Go\n- **`wavevr`**: VIVE Focus\n\nFor testing on a non-VR device:\n\n- **`noapi`**: Runs on standard Android phones without a headset\n\nBuilding for Oculus Mobile, and WaveVR requires access to their respective SDKs which are not included in this repo.\n\nThe command line version of `gradlew` requires [JDK 8 from Oracle](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). If you see an error that Gradle doesn't understand your Java version, check which version of you're using by running `java -showversion` or `java -version`. You're probably using JDK 9 or 10, which won't work.\n\n*Open the project with [Android Studio](https://developer.android.com/studio/index.html)* then build and run it. Depending on what you already have installed in Android Studio, the build may fail and then may prompt you to install dependencies. Just keep doing as it suggests. To select the device to build for, go to `Tool Windows \u003e Build Variants` and select a build variant corresponding to your device.\n\n*If you want to build FirefoxReality for WaveVR SDK:*\n\nDownload the [VIVE Wave SDK](https://developer.vive.com/resources/knowledgebase/wave-sdk/) from the [VIVE Developer Resources](https://vivedeveloper.com/), and unzip it. Then, from the top-level project directory, run:\n\n```bash\nmkdir -p third_party/wavesdk\ncp /path/to/the/sdk/2.0.32/SDK/libs/wvr_client.aar third_party/wavesdk\ncp ./extra/wavesdk/build.gradle ./third_party/wavesdk\n```\n\nMake certain to set the build flavor to `wavevrDebug` in Android Studio before building the project.\n\n## Local Development\n\n### Dependency substitutions\n\nYou might be interested in building this project against local versions of some of the dependencies.\nThis could be done either by using a [local maven repository](https://mozilla-mobile.github.io/android-components/contributing/testing-components-inside-app) (quite cumbersome), or via Gradle's [dependency substitutions](https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html) (not at all cumbersome!).\n\nCurrently, the substitution flow is streamlined for some of the core dependencies via configuration flags in `local.properties`. You can build against a local checkout of the following dependencies by specifying their local paths:\n- [GeckoView](https://hg.mozilla.org/mozilla-central), specifying its path via `dependencySubstitutions.geckoviewTopsrcdir=/path/to/mozilla-central` (and, optionally, `dependencySubstitutions.geckoviewTopobjdir=/path/to/topobjdir`). See [Bug 1533465](https://bugzilla.mozilla.org/show_bug.cgi?id=1533465).\n  - This assumes that you have built, packaged, and published your local GeckoView -- but don't worry, the dependency substitution script has the latest instructions for doing that.\n\nDo not forget to run a Gradle sync in Android Studio after changing `local.properties`. If you specified any substitutions, they will be reflected in the modules list, and you'll be able to modify them from a single Android Studio window.\n\n\n## Install dev and production builds on device simultaneously\n\nYou can enable a dev applicationID sufix to install both dev and production builds simultaneously. You just need to add this property to your `user.properties` file:\n\n```ini\nsimultaneousDevProduction=true\n```\n## Locally generate Android release builds\n\nLocal release builds can be useful to measure performance or debug issues only happening in release builds. Insead of dealing with release keys you can make the testing easier just adding this property to your `user.properties` file:\n\n```ini\nuseDebugSigningOnRelease=true\n```\n\nNote: the release APKs generated with a debug keystore can't be used for production.\n\n## Compress assets\n\nETC2 compression is used to improve performance and memory usage. Raw assets are placed in the `uncompressed_assets` folder. You can generate the compressed textures using the compressor utility in `tools/compressor`. You need to set up [etc2comp](https://github.com/google/etc2comp) and make it available on your PATH before running the script. Run this command to generate the compressed assets:\n\n```bash\ncd tools/compressor\nnpm install\nnpm run compress\n```\n\n## Enable OpenXR builds\nYou can enable OpenXR API for Oculus by adding this property to your `user.properties` file:\n\n```ini\nopenxr=true\n```\n\n## Development troubleshooting\n\n### `Device supports , but APK only supports armeabi-v7a[...]`\n\nEnable [USB Remote Debugging](https://github.com/MozillaReality/FirefoxReality/wiki/Developer-Info#remote-debugging) on the device.\n\n### **`Firefox \u003e Web Developer \u003e WebIDE \u003e Performance`** gets stuck with greyed out \"stop and show profile\"\n\nRestart FxR and close and re-open the WebIDE page.\n\n### **`Tool Windows \u003e Build Variants`** list is empty\n\n1. If you're not on the latest version, update Android Studio from **`Android Studio \u003e Check for Updates…`**.\n2. Run **`File \u003e Sync Project with Gradle Files`**.\n\n## Debugging tips\n\n- When using the native debugger you can ignore the first SIGSEGV: address access protected stop in GV thread. It's not a crash; you can click *Resume* to continue debugging.\n- On some platforms such as Oculus Go the native debugger stops on each input event. You can set this LLDB post-attach command in Android Studio to fix the problem: `pro hand -p true -s false SIGILL`\n- You can use `adb shell am start -a android.intent.action.VIEW -d \"https://aframe.io\" org.mozilla.vrbrowser/org.mozilla.vrbrowser.VRBrowserActivity` to load a URL from the command line\n- You can use `adb shell am start -a android.intent.action.VIEW  -n org.mozilla.vrbrowser/org.mozilla.vrbrowser.VRBrowserActivity -e homepage \"https://example.com\"` to override the homepage\n- You can use `adb shell setprop debug.oculus.enableVideoCapture 1` to record a video on the Oculus Go. Remember to run `adb shell setprop debug.oculus.enableVideoCapture 0` to stop recording the video.\n    - You can also record videos on the Oculus Go by exiting to the system library, and from the Oculus tray menu (toggle with the Oculus button on the controller): **`Sharing \u003e Record Video`**\n- You can set `disableCrashRestart=true` in the gradle `user.properties` to disable app relaunch on crash.\n\n## Experimental Servo support\n\nTo compile with Servo support, create a file called `user.properties` in the top-level project directory and add `enableServo=1`. Then to enable Servo in Firefox Reality, go the Developer Options panel in the Settings, and toggle the Servo option. Then a new button will be added to the navigation bar. Clicking that button will reload the current page with Servo.\n","funding_links":[],"categories":["Web-Based Frameworks"],"sub_categories":["Motion Controllers inside Unity!"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMozillaReality%2FFirefoxReality","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMozillaReality%2FFirefoxReality","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMozillaReality%2FFirefoxReality/lists"}