Skip to content

修复:移除不必要的 Material 3 实验性 API 导入 #9

修复:移除不必要的 Material 3 实验性 API 导入

修复:移除不必要的 Material 3 实验性 API 导入 #9

name: "Build Android Commit"
on:
workflow_dispatch:
push:
branches:
- dev
env:
OUTPUT_DIR: "composeApp/build/outputs/apk/release"
SIGN_KEY_ALIAS: ${{ secrets.SIGN_KEY_ALIAS || 'a' }}
SIGN_KEY_STORE_PASSWORD: ${{ secrets.SIGN_KEY_STORE_PASSWORD || 'passwd' }}
SIGN_KEY_PASSWORD: ${{ secrets.SIGN_KEY_PASSWORD || 'passwd' }}
SIGN_KEY_STORE_FILE: ${{ github.workspace }}/keystore.jks
jobs:
build:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'ci skip')"
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Set up Android SDK
uses: android-actions/setup-android@v3
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v5
- name: Check for secrets and handle keystore
run: |
if [ -n "${{ secrets.SIGN_KEY_ALIAS }}" ] && \
[ -n "${{ secrets.SIGN_KEY_STORE_PASSWORD }}" ] && \
[ -n "${{ secrets.SIGN_KEY_PASSWORD }}" ] && \
[ -n "${{ secrets.SIGN_KEY_BASE64 }}" ]; then
echo "Signing secrets found. Decoding keystore..."
echo "${{ secrets.SIGN_KEY_BASE64 }}" | base64 --decode > ${{ env.SIGN_KEY_STORE_FILE }}
echo "Keystore decoded successfully."
else
echo "Signing secrets not found. Generating temporary keystore..."
keytool -genkey -v \
-keystore ${{ env.SIGN_KEY_STORE_FILE }} \
-alias ${{ env.SIGN_KEY_ALIAS }} \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-storepass ${{ env.SIGN_KEY_STORE_PASSWORD }} \
-keypass ${{ env.SIGN_KEY_PASSWORD }} \
-dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown"
echo "Temporary keystore generated successfully."
fi
shell: bash
- name: Make gradlew executable
run: chmod +x gradlew
- name: Build APK
run: |
./gradlew composeApp:exportLibraryDefinitions
./gradlew assembleRelease
- name: Install jq
run: sudo apt-get install -y jq
- name: Parse output-metadata.json
id: parse_metadata
run: |
OUTPUT_METADATA_FILE="${{ env.OUTPUT_DIR }}/output-metadata.json"
VERSION_NAME=$(jq -r '.elements[0].versionName' $OUTPUT_METADATA_FILE)
VERSION_CODE=$(jq -r '.elements[0].versionCode' $OUTPUT_METADATA_FILE)
echo "::set-output name=versionName::$VERSION_NAME"
echo "::set-output name=versionCode::$VERSION_CODE"
echo "::set-output name=apkPath::$(jq -r '.elements[0].outputFile' $OUTPUT_METADATA_FILE)"
- name: Rename APK
id: rename_apk
run: |
APK_PATH="${{ env.OUTPUT_DIR }}/${{ steps.parse_metadata.outputs.apkPath }}"
echo "::set-output name=apkPath::$APK_PATH"
- name: Get latest commit message
id: get_commit_message
run: echo "::set-output name=message::$(git show -s --format=%s)"
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.parse_metadata.outputs.versionName }}
prerelease: true
body: ${{ steps.get_commit_message.outputs.message }}
files: ${{ steps.rename_apk.outputs.apkPath }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}