feat: signed release

This commit is contained in:
Miuzarte
2026-04-12 01:15:49 +08:00
parent 30e4c0679b
commit e25d40f237
3 changed files with 49 additions and 10 deletions

View File

@@ -12,6 +12,11 @@ jobs:
ci-build:
if: ${{ github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-latest
env:
RELEASE_STORE_FILE: /tmp/release.p12
RELEASE_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }}
RELEASE_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
RELEASE_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
steps:
- uses: actions/checkout@v4
@@ -45,8 +50,14 @@ jobs:
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build debug and unsigned release APKs
run: ./gradlew clean assembleDebug assembleRelease
- name: Decode signing keystore
shell: bash
run: |
set -euo pipefail
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > "$RELEASE_STORE_FILE"
- name: Build signed release APKs
run: ./gradlew clean assembleRelease
- name: Collect CI APKs
run: |
@@ -80,6 +91,11 @@ jobs:
release-build:
if: ${{ startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
env:
RELEASE_STORE_FILE: /tmp/release.p12
RELEASE_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }}
RELEASE_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
RELEASE_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
steps:
- uses: actions/checkout@v4
@@ -113,8 +129,14 @@ jobs:
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build debug and unsigned release APKs
run: ./gradlew clean assembleDebug assembleRelease
- name: Decode signing keystore
shell: bash
run: |
set -euo pipefail
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > "$RELEASE_STORE_FILE"
- name: Build signed release APKs
run: ./gradlew clean assembleRelease
- name: Collect release assets
run: |
@@ -148,8 +170,6 @@ jobs:
download_base_url="https://github.com/${GITHUB_REPOSITORY}/releases/download/${GITHUB_REF_NAME}"
{
echo "**release-unsigned** 为未签名构建,无法直接安装"
echo
echo "| 架构 | 构建类型 | 文件 | SHA256 | 大小 |"
echo "| --- | --- | --- | --- | --- |"
@@ -170,10 +190,7 @@ jobs:
arch="arm_all"
fi
build_type="debug"
if [[ "$file_name" == *"unsigned"* ]]; then
build_type="release-unsigned"
fi
build_type="release"
file_url="${download_base_url}/${file_name}"
sha256_value="$(sha256sum "$apk" | awk '{print $1}')"

1
.gitignore vendored
View File

@@ -26,6 +26,7 @@ render.experimental.xml
# Keystore files
*.jks
*.keystore
.env
# Google Services (e.g. APIs or Firebase)
google-services.json

View File

@@ -16,6 +16,26 @@ android {
namespace = "io.github.miuzarte.scrcpyforandroid"
compileSdk = 37
signingConfigs {
create("release") {
val releaseStoreFile = System.getenv("RELEASE_STORE_FILE")
val releaseStorePassword = System.getenv("RELEASE_STORE_PASSWORD")
val releaseKeyAlias = System.getenv("RELEASE_KEY_ALIAS")
val releaseKeyPassword = System.getenv("RELEASE_KEY_PASSWORD")
if (!releaseStoreFile.isNullOrBlank()) {
storeFile = file(releaseStoreFile)
storePassword = releaseStorePassword
keyAlias = releaseKeyAlias
keyPassword = releaseKeyPassword
enableV1Signing = true
enableV2Signing = true
enableV3Signing = true
enableV4Signing = true
}
}
}
defaultConfig {
applicationId = "io.github.miuzarte.scrcpyforandroid"
minSdk = 26
@@ -49,6 +69,7 @@ android {
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),