From df09c368e3c5e6ed700c430a6d48fee82ebe9be1 Mon Sep 17 00:00:00 2001 From: 22 <60903333+nini22P@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:28:06 +0800 Subject: [PATCH] feat: build debug APK when key.properties does not exist --- .github/workflows/build-terre.yml | 15 ++++------- packages/terre-android/.gitignore | 6 ++++- packages/terre-android/app/build.gradle.kts | 29 +++++++++++---------- release-android.sh | 16 +++++++++--- 4 files changed, 37 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build-terre.yml b/.github/workflows/build-terre.yml index fa78bab0..186ae73c 100644 --- a/.github/workflows/build-terre.yml +++ b/.github/workflows/build-terre.yml @@ -144,6 +144,7 @@ jobs: run: | echo "${{ secrets.KEYSTORE }}" | base64 --decode > packages/terre-android/app/keystore.jks - name: Save key.properties + if: ${{ env.KEYSTORE != '' }} run: | echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> packages/terre-android/key.properties echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> packages/terre-android/key.properties @@ -153,21 +154,15 @@ jobs: env: GH_TOKEN: ${{ secrets.GH_TOKEN }} run: sh release-android.sh - - name: Rename signed apk - if: ${{ env.KEYSTORE != '' }} - run: mv packages/terre-android/app/build/outputs/apk/release/app-release.apk release/WebGAL_Terre_Android.apk - - name: Upload Artifact + - name: Upload Release Artifact if: ${{ env.KEYSTORE != '' }} uses: actions/upload-artifact@v4 with: name: WebGAL_Terre_Android path: release/WebGAL_Terre_Android.apk - - name: Rename unsigned apk - if: ${{ env.KEYSTORE == '' }} - run: mv packages/terre-android/app/build/outputs/apk/release/app-release-unsigned.apk release/WebGAL_Terre_Android_unsigned.apk - - name: Upload unsigned Artifact + - name: Upload Debug Artifact if: ${{ env.KEYSTORE == '' }} uses: actions/upload-artifact@v4 with: - name: WebGAL_Terre_Android_unsigned - path: release/WebGAL_Terre_Android_unsigned.apk + name: WebGAL_Terre_Android_debug + path: release/WebGAL_Terre_Android_debug.apk diff --git a/packages/terre-android/.gitignore b/packages/terre-android/.gitignore index 4d5768e4..9bfcf684 100644 --- a/packages/terre-android/.gitignore +++ b/packages/terre-android/.gitignore @@ -16,4 +16,8 @@ local.properties app/libnode/bin app/libnode/include app/libnode/nodejs-mobile-* -app/src/main/assets/terre \ No newline at end of file +app/src/main/assets/terre + +# key +key.properties +keystore.jks \ No newline at end of file diff --git a/packages/terre-android/app/build.gradle.kts b/packages/terre-android/app/build.gradle.kts index c06af525..5e75f827 100644 --- a/packages/terre-android/app/build.gradle.kts +++ b/packages/terre-android/app/build.gradle.kts @@ -41,7 +41,19 @@ android { abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a", "x86_64")) } } - + signingConfigs { + if (keystorePropertiesFile.exists()) + create("release") { + keyAlias = keystoreProperties["keyAlias"] as? String + ?: throw IllegalArgumentException("Key alias is missing") + keyPassword = keystoreProperties["keyPassword"] as? String + ?: throw IllegalArgumentException("Key password is missing") + storeFile = (keystoreProperties["storeFile"] as? String)?.let { file(it) } + ?: throw IllegalArgumentException("Store file is missing") + storePassword = keystoreProperties["storePassword"] as? String + ?: throw IllegalArgumentException("Store password is missing") + } + } buildTypes { release { isMinifyEnabled = false @@ -49,6 +61,8 @@ android { getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) + if (keystorePropertiesFile.exists()) + signingConfig = signingConfigs.getByName("release") } } compileOptions { @@ -72,19 +86,6 @@ android { jniLibs.srcDirs("libnode/bin/") } } - signingConfigs { - if (keystorePropertiesFile.exists()) - create("release") { - keyAlias = keystoreProperties["keyAlias"] as? String - ?: throw IllegalArgumentException("Key alias is missing") - keyPassword = keystoreProperties["keyPassword"] as? String - ?: throw IllegalArgumentException("Key password is missing") - storeFile = (keystoreProperties["storeFile"] as? String)?.let { file(it) } - ?: throw IllegalArgumentException("Store file is missing") - storePassword = keystoreProperties["storePassword"] as? String - ?: throw IllegalArgumentException("Store password is missing") - } - } } dependencies { diff --git a/release-android.sh b/release-android.sh index e8a56334..99cc7a25 100644 --- a/release-android.sh +++ b/release-android.sh @@ -42,9 +42,17 @@ cp -rf release/* packages/terre-android/app/src/main/assets/terre cd packages/terre-android -# 打包 -./gradlew assembleRelease - -cd ../../ +# 检查 key.properties 是否存在 +if [ -f "key.properties" ]; then + echo "key.properties file exists, start build release apk..." + ./gradlew assembleRelease + cd ../../ + mv packages/terre-android/app/build/outputs/apk/release/app-release.apk release/WebGAL_Terre_Android.apk +else + echo "key.properties file does not exist, start build debug apk..." + ./gradlew assembleDebug + cd ../../ + mv packages/terre-android/app/build/outputs/apk/debug/app-debug.apk release/WebGAL_Terre_Android_debug.apk +fi echo "WebGAL Terre is now ready to be deployed." \ No newline at end of file