From 859418e50c4a2f1d43add9d39894e4f3840d9f52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A6=E5=90=9B?= <73606411+setube@users.noreply.github.com> Date: Sat, 20 Dec 2025 01:32:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=85=8D=E7=BD=AEAndroid=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E4=B8=8EAPK=E5=90=8E=E7=BC=80=E5=A4=A7=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增release.keystore并在build.gradle中配置签名信息,发布包启用签名。统一Android APK文件后缀为大写.APK,调整CI流程相关路径匹配。 --- .github/workflows/build.yml | 4 ++-- android/app/build.gradle | 12 +++++++++++- android/app/release.keystore | Bin 0 -> 2710 bytes 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 android/app/release.keystore diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9df25df..63e8cfc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -111,7 +111,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: android-apk - path: android/app/build/outputs/apk/release/*.apk + path: android/app/build/outputs/apk/release/*.APK # 3. 构建 Electron 客户端 build-electron: @@ -189,7 +189,7 @@ jobs: find ./raw-assets/electron-* -type f \( -name "*.exe" -o -name "*.dmg" -o -name "*.AppImage" -o -name "*.zip" \) -exec cp {} ./final-release/ \; # 移动 Android APK - find ./raw-assets/android-apk -type f -name "*.apk" -exec cp {} ./final-release/ \; || true + find ./raw-assets/android-apk -type f -name "*.APK" -exec cp {} ./final-release/ \; || true # 检查结果 echo "Final assets to upload:" diff --git a/android/app/build.gradle b/android/app/build.gradle index 36025a7..6eac715 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -27,11 +27,21 @@ android { } } + signingConfigs { + release { + storeFile file('release.keystore') + storePassword 'ogame123' + keyAlias 'ogame' + keyPassword 'ogame123' + } + } + buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release } } @@ -46,7 +56,7 @@ android { def abi = output.getFilter(com.android.build.OutputFile.ABI) if (abi != null) { output.versionCodeOverride = abiVersionCode[abi] * 1000 + defaultConfig.versionCode - output.outputFileName = "OGame-${defaultConfig.versionName}-${abi}.apk" + output.outputFileName = "OGame-${defaultConfig.versionName}-${abi}.APK" } } } diff --git a/android/app/release.keystore b/android/app/release.keystore new file mode 100644 index 0000000000000000000000000000000000000000..acbdfad581d59fd43fec96466147d5dedc9de345 GIT binary patch literal 2710 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 literal 0 HcmV?d00001