diff --git a/build-android/upload-horizon.sh b/build-android/upload-horizon.sh new file mode 100755 index 0000000..ac848a6 --- /dev/null +++ b/build-android/upload-horizon.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +if [ "$#" -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +VERSION_NAME="$1" +LATEST_STABLE="$2" + +BASEDIR="$(pwd)" + +source ${BASEDIR}/config.sh + +TMPDIR=$(mktemp -d) +cleanup() { + rm -rf "$TMPDIR" +} +trap cleanup EXIT + +OVR_PLATFORM_UTIL_DOWNLOAD_URL="https://www.oculus.com/download_app/?id=5159709737372459" +OVR_PLATFORM_UTIL="$TMPDIR/ovr-platform-util" + +APK_FILE="${BASEDIR}/out/android/tools/android_editor_horizonos.apk" +NDS_FILE="${BASEDIR}/out/android/tools/android_editor_native_debug_symbols.zip" +NDS_OUTPUT_DIR="$TMPDIR/nds" + +STATUS=$(echo "$VERSION_NAME" | sed -e 's/^.*-\([a-z][a-z]*\)[0-9]*$/\1/') +if [ "$STATUS" = "stable" -a "$LATEST_STABLE" = "1" ]; then + HORIZON_STORE_CHANNEL="LIVE" +elif [ "$STATUS" = "dev" ]; then + HORIZON_STORE_CHANNEL="ALPHA" +elif [ "$STATUS" = "beta" ]; then + HORIZON_STORE_CHANNEL="BETA" +elif [ "$STATUS" = "rc" ]; then + HORIZON_STORE_CHANNEL="RC" +else + echo "Unable to determine Horizon store channel from version status: $STATUS" >/dev/stderr + exit 1 +fi + +mkdir -p "$NDS_OUTPUT_DIR" +(cd "$NDS_OUTPUT_DIR" && unzip "$NDS_FILE") + +echo "Downloading ovr-platform-util..." +if ! curl -fL -o "$OVR_PLATFORM_UTIL" "$OVR_PLATFORM_UTIL_DOWNLOAD_URL"; then + exit 1 +fi + +chmod +x "$OVR_PLATFORM_UTIL" + +echo "Uploading $VERSION_NAME to Horizon store on channel $HORIZON_STORE_CHANNEL..." +if ! $OVR_PLATFORM_UTIL upload-quest-build --app-id "$GODOT_ANDROID_HORIZON_APP_ID" --app-secret "$GODOT_ANDROID_HORIZON_APP_SECRET" --apk "$APK_FILE" --channel "$HORIZON_STORE_CHANNEL" --debug-symbols-dir "$NDS_OUTPUT_DIR/arm64-v8a/" --debug-symbols-pattern '*.so'; then + exit 1 +fi diff --git a/config.sh.in b/config.sh.in index f149f1a..093585b 100644 --- a/config.sh.in +++ b/config.sh.in @@ -101,3 +101,6 @@ export GODOT_ANDROID_SIGN_PASSWORD='' # Google Cloud Service Account JSON key with access to Play Console upload permissions # (View app information + Release apps to production and/or testing.) export GODOT_ANDROID_UPLOAD_JSON_KEY='' +# Horizon Store app ID and secret. +export GODOT_ANDROID_HORIZON_APP_ID='' +export GODOT_ANDROID_HORIZON_APP_SECRET='' diff --git a/publish-release.sh b/publish-release.sh index 68df0ed..97d8569 100755 --- a/publish-release.sh +++ b/publish-release.sh @@ -187,7 +187,14 @@ if [ -e "${GODOT_ANDROID_UPLOAD_JSON_KEY}" ]; then echo "Publishing Android Editor to Play Store..." sh build-android/upload-playstore.sh ${godot_version} else - echo "Disabling Android Editor publishing as no valid Play Store JSON key was found." + echo "Disabling Android Editor publishing on the Play Store as no valid Play Store JSON key was found." +fi + +if [ ! -z "${GODOT_ANDROID_HORIZON_APP_ID}" ] && [ ! -z "${GODOT_ANDROID_HORIZON_APP_SECRET}" ]; then + echo "Publishing Android Editor to Horizon Store..." + ./build-android/upload-horizon.sh ${godot_version} ${latest_stable} +else + echo "Disabling Android Editor publishing on the Horizon Store as config.sh does not define the required data (GODOT_ANDROID_HORIZON_APP_ID, GODOT_ANDROID_HORIZON_SECRET)." fi # Godot Android library