feat: signed release
This commit is contained in:
37
.github/workflows/android.yml
vendored
37
.github/workflows/android.yml
vendored
@@ -12,6 +12,11 @@ jobs:
|
|||||||
ci-build:
|
ci-build:
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
if: ${{ github.event_name == 'workflow_dispatch' }}
|
||||||
runs-on: ubuntu-latest
|
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:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@@ -45,8 +50,14 @@ jobs:
|
|||||||
- name: Grant execute permission for gradlew
|
- name: Grant execute permission for gradlew
|
||||||
run: chmod +x gradlew
|
run: chmod +x gradlew
|
||||||
|
|
||||||
- name: Build debug and unsigned release APKs
|
- name: Decode signing keystore
|
||||||
run: ./gradlew clean assembleDebug assembleRelease
|
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
|
- name: Collect CI APKs
|
||||||
run: |
|
run: |
|
||||||
@@ -80,6 +91,11 @@ jobs:
|
|||||||
release-build:
|
release-build:
|
||||||
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||||
runs-on: ubuntu-latest
|
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:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@@ -113,8 +129,14 @@ jobs:
|
|||||||
- name: Grant execute permission for gradlew
|
- name: Grant execute permission for gradlew
|
||||||
run: chmod +x gradlew
|
run: chmod +x gradlew
|
||||||
|
|
||||||
- name: Build debug and unsigned release APKs
|
- name: Decode signing keystore
|
||||||
run: ./gradlew clean assembleDebug assembleRelease
|
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
|
- name: Collect release assets
|
||||||
run: |
|
run: |
|
||||||
@@ -148,8 +170,6 @@ jobs:
|
|||||||
download_base_url="https://github.com/${GITHUB_REPOSITORY}/releases/download/${GITHUB_REF_NAME}"
|
download_base_url="https://github.com/${GITHUB_REPOSITORY}/releases/download/${GITHUB_REF_NAME}"
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "**release-unsigned** 为未签名构建,无法直接安装"
|
|
||||||
echo
|
|
||||||
echo "| 架构 | 构建类型 | 文件 | SHA256 | 大小 |"
|
echo "| 架构 | 构建类型 | 文件 | SHA256 | 大小 |"
|
||||||
echo "| --- | --- | --- | --- | --- |"
|
echo "| --- | --- | --- | --- | --- |"
|
||||||
|
|
||||||
@@ -170,10 +190,7 @@ jobs:
|
|||||||
arch="arm_all"
|
arch="arm_all"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
build_type="debug"
|
build_type="release"
|
||||||
if [[ "$file_name" == *"unsigned"* ]]; then
|
|
||||||
build_type="release-unsigned"
|
|
||||||
fi
|
|
||||||
|
|
||||||
file_url="${download_base_url}/${file_name}"
|
file_url="${download_base_url}/${file_name}"
|
||||||
sha256_value="$(sha256sum "$apk" | awk '{print $1}')"
|
sha256_value="$(sha256sum "$apk" | awk '{print $1}')"
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -26,6 +26,7 @@ render.experimental.xml
|
|||||||
# Keystore files
|
# Keystore files
|
||||||
*.jks
|
*.jks
|
||||||
*.keystore
|
*.keystore
|
||||||
|
.env
|
||||||
|
|
||||||
# Google Services (e.g. APIs or Firebase)
|
# Google Services (e.g. APIs or Firebase)
|
||||||
google-services.json
|
google-services.json
|
||||||
|
|||||||
@@ -16,6 +16,26 @@ android {
|
|||||||
namespace = "io.github.miuzarte.scrcpyforandroid"
|
namespace = "io.github.miuzarte.scrcpyforandroid"
|
||||||
compileSdk = 37
|
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 {
|
defaultConfig {
|
||||||
applicationId = "io.github.miuzarte.scrcpyforandroid"
|
applicationId = "io.github.miuzarte.scrcpyforandroid"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
@@ -49,6 +69,7 @@ android {
|
|||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
|
signingConfig = signingConfigs.getByName("release")
|
||||||
isMinifyEnabled = false
|
isMinifyEnabled = false
|
||||||
proguardFiles(
|
proguardFiles(
|
||||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||||
|
|||||||
Reference in New Issue
Block a user