Skip to content

fix: 修复自动识别与文字提取体验 #19

fix: 修复自动识别与文字提取体验

fix: 修复自动识别与文字提取体验 #19

Workflow file for this run

name: Release
# 触发条件:推送 v 前缀的 tag。例如 `git tag v0.2.0 && git push origin v0.2.0`。
# 也可以在 GitHub Actions 页手动跑(workflow_dispatch),指定 tag 名。
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
tag:
description: 'Tag name to release (e.g. v0.2.0)'
required: true
permissions:
contents: write # 创建 GitHub Release / 上传 assets 需要
jobs:
build-and-release:
name: Build release APK and publish to GitHub Releases
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.tag || github.ref }}
fetch-depth: 0
submodules: recursive
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
# 仓库未提交 gradle-wrapper.jar,CI 上每次跑时先用 setup-gradle 装的 gradle 生成 wrapper
- name: Generate Gradle wrapper jar
run: gradle wrapper --gradle-version 8.10.2
- name: Decode release keystore
env:
KEYSTORE_BASE64: ${{ secrets.RELEASE_KEYSTORE_BASE64 }}
run: |
if [ -z "$KEYSTORE_BASE64" ]; then
echo "::error::Secret RELEASE_KEYSTORE_BASE64 is not set. See README → 发版 一节。"
exit 1
fi
mkdir -p "$RUNNER_TEMP/keystore"
echo "$KEYSTORE_BASE64" | base64 -d > "$RUNNER_TEMP/keystore/release.jks"
echo "RELEASE_KEYSTORE_PATH=$RUNNER_TEMP/keystore/release.jks" >> "$GITHUB_ENV"
- name: Build release APK
env:
RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }}
RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }}
RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
run: ./gradlew --no-daemon clean assembleRelease
- name: Locate APK
id: apk
run: |
APK_PATH=$(find app/build/outputs/apk/release -name '*.apk' ! -name '*unsigned*' | head -n1)
if [ -z "$APK_PATH" ]; then
echo "::error::No signed release APK found"
ls -la app/build/outputs/apk/release || true
exit 1
fi
VERSION=${GITHUB_REF_NAME#v}
[ "$GITHUB_REF_NAME" = "$VERSION" ] && VERSION="${{ github.event.inputs.tag }}"
NEW_NAME="ScreenTranslator-${VERSION}.apk"
cp "$APK_PATH" "$NEW_NAME"
sha256sum "$NEW_NAME" > "$NEW_NAME.sha256"
echo "apk_path=$NEW_NAME" >> "$GITHUB_OUTPUT"
echo "apk_sha=$NEW_NAME.sha256" >> "$GITHUB_OUTPUT"
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.inputs.tag || github.ref_name }}
name: ${{ github.event.inputs.tag || github.ref_name }}
generate_release_notes: true
files: |
${{ steps.apk.outputs.apk_path }}
${{ steps.apk.outputs.apk_sha }}
fail_on_unmatched_files: true