Skip to content

Instantly share code, notes, and snippets.

@ScottKirvan
Created September 22, 2025 21:35
Show Gist options
  • Select an option

  • Save ScottKirvan/8e31195ea44648c9f7e19838d1d86845 to your computer and use it in GitHub Desktop.

Select an option

Save ScottKirvan/8e31195ea44648c9f7e19838d1d86845 to your computer and use it in GitHub Desktop.
Android, Quest, Unreal: Generate Release Keystores

Release Channels in the Meta Horizons Store require signed release mode Keystores.

Unreal Engine's packaging system expects your keystore to be in your project's Build/Android subdirectory.

Once Generated, DO NOT LOSE your keystore

Keystores are files that are signed and unique and are required for app distribution on the Google and Meta online stores.

If you lose your keystore, you will not be able to upload updates to your app in the Meta Horizons Store -- you will have to create a whole new app entity on the store, recreate your store's application page, and if you have any existing customers, you'll have to manually re-invite them all back in, which is a very tedious and error-prone process.

There are technical ways to recover and rebuild a lost keystore, but the process is not trivial and will require the cooperation of meta to get a copy of the data you need -- stories in the field make it clear that Meta is not always cooperative in retrieving this data. Their cooperation is, however, required, and probably dependent on your developer level and how big of a company you represent, so if you're a smaller, indie dev, you'll probably end up starting the Horizon App process from scratch.

Generating Keystores

Here's some example data we'll use to generate our keystore:

  • Keystore path: "Build/Android"
  • Keystore name: "ExampleKey.keystore"
  • Keystore Alias: "MyKey"
  • Keystore Store Password: "123456"
  • Keystore Key Password: "123456"
  • Keystore DName: "CN=John Doe, OU=Engineering, O=MyCompany, L=MyCity, ST=MyState, C=US

To Generate Keystores for signing Android apps with the command line, use:

keytool -genkey -v -keystore Build\Android\ExampleKey.Keystore -alias MyKey -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=John Doe, OU=Engineering, O=MyCompany, L=MyCity, ST=MyState, C=US" -storepass 123456 -keypass 123456

This is generate your signed keystore file in Build/Android/ExampleKey.keystore -- do not lose this file!

Settings Required within unreal for the Meta Horizon Store

Given this example data, you'll then make the following changes to your Project Settings in Unreal:

Inside of UE, go to Edit > Project Settings > Platforms > Android:

Under Distribution Signing:

name value
Key Store ExampleKey.keystore
Key Alias MyKey
Key Store Password 123456
Key Password (leave blank)

Under APK Packaging > Store Version: Set this value to at least "1" - it is a number that needs to be unique for each update or new version you upload. Best practice is to treat it as a serial number and increment it by 1 for each build.

There are lots of other settings that are needed, and you will most likely get errors when you first try to upload to the Meta Horizons Store. The error messages usually tell you what needs to be changed. Some of these are things like; setting your project packaging to "shipping," and "for distribution," and to specify "landscape" as the output specific to the quest platforms, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment