From 8b7acad2578b5df8e2bae78ed6229cada94e2740 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Sat, 23 May 2026 21:54:40 +0800 Subject: [PATCH] [CI]: add android build key + signing process --- .github/workflows/plugin-apk.yml | 11 ++++++++++- android-plugin/app/build.gradle | 22 ++++++++++++++++++++++ android-plugin/keystore.jks | Bin 0 -> 2225 bytes 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 android-plugin/keystore.jks diff --git a/.github/workflows/plugin-apk.yml b/.github/workflows/plugin-apk.yml index 0b119349..178bb664 100644 --- a/.github/workflows/plugin-apk.yml +++ b/.github/workflows/plugin-apk.yml @@ -48,9 +48,18 @@ jobs: - name: Build plugin APK run: gradle --no-daemon -p android-plugin :app:assembleRelease + env: + SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }} + SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }} + SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} + + - name: Verify signed APK + run: | + APKSIGNER="$(find "$ANDROID_HOME/build-tools" -name apksigner -type f | sort -V | tail -n 1)" + "$APKSIGNER" verify --verbose android-plugin/app/build/outputs/apk/release/app-release.apk - name: Upload plugin APK uses: actions/upload-artifact@v4 with: name: MobileGL-plugin-${{ env.date_today }}-${{ env.short_sha }} - path: android-plugin/app/build/outputs/apk/release/*.apk + path: android-plugin/app/build/outputs/apk/release/app-release.apk diff --git a/android-plugin/app/build.gradle b/android-plugin/app/build.gradle index 477c1cbd..8a049d63 100644 --- a/android-plugin/app/build.gradle +++ b/android-plugin/app/build.gradle @@ -9,6 +9,14 @@ def mobileGlEnv = [ ] def mobileGlEnvString = mobileGlEnv.collect { key, value -> "${key}=${value}" }.join(':') +def signingStoreFile = file('../keystore.jks') +def signingStorePassword = System.getenv('SIGNING_STORE_PASSWORD') +def signingKeyAlias = System.getenv('SIGNING_KEY_ALIAS') +def signingKeyPassword = System.getenv('SIGNING_KEY_PASSWORD') +def releaseSigningReady = signingStoreFile.exists() + && signingStorePassword + && signingKeyAlias + && signingKeyPassword android { namespace 'top.mobilegl.plugin' @@ -34,9 +42,23 @@ android { ] } + if (releaseSigningReady) { + signingConfigs { + release { + storeFile signingStoreFile + storePassword signingStorePassword + keyAlias signingKeyAlias + keyPassword signingKeyPassword + } + } + } + buildTypes { release { minifyEnabled false + if (releaseSigningReady) { + signingConfig signingConfigs.release + } } } diff --git a/android-plugin/keystore.jks b/android-plugin/keystore.jks new file mode 100644 index 0000000000000000000000000000000000000000..3fae26b33e4cac52d2dc89ca6bbf7d36bc6adce0 GIT binary patch literal 2225 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 literal 0 HcmV?d00001