修复:移除不必要的 Material 3 实验性 API 导入 #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |