Skip to content

update

update #25

Workflow file for this run

name: Android CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Set up Android SDK
uses: android-actions/setup-android@v3
- name: Generate signing key
run: |
keytool -genkey -v \
-keystore my-release-key.keystore \
-alias my-key-alias \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-storepass password \
-keypass password \
-dname "CN=Android, OU=Android, O=Android, L=Unknown, ST=Unknown, C=US"
- name: Configure gradle.properties
run: |
cat << EOF > $GITHUB_WORKSPACE/gradle.properties
android.useAndroidX=true
android.enableJetifier=true
android.nonTransitiveRClass=true
RELEASE_STORE_FILE=my-release-key.keystore
RELEASE_STORE_PASSWORD=password
RELEASE_KEY_ALIAS=my-key-alias
RELEASE_KEY_PASSWORD=password
EOF
- name: Build signed APK
run: |
./gradlew assembleRelease
ls -l app/build/outputs/apk/release
- name: Verify APK signature
run: |
# 确保 build-tools 存在
if [ ! -d "$ANDROID_HOME/build-tools" ]; then
echo "Installing build-tools..."
yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "build-tools;34.0.0"
fi
# 使用最新 build-tools 版本
BUILD_TOOLS_DIR=$(ls $ANDROID_HOME/build-tools | sort -V | tail -n 1)
APKSIGNER="$ANDROID_HOME/build-tools/$BUILD_TOOLS_DIR/apksigner"
echo "Using apksigner at: $APKSIGNER"
$APKSIGNER --version
apk_path=$(find app/build/outputs/apk/release -name "*.apk" | head -n 1)
if [ ! -f "$apk_path" ]; then
echo "❌ APK not found at $apk_path"
exit 1
fi
echo "Verifying $apk_path"
$APKSIGNER verify --verbose "$apk_path"
echo "✅ APK verification successful"
- name: Upload signed APK
uses: actions/upload-artifact@v4
with:
name: app-release-signed.apk
path: app/build/outputs/apk/release/*-release.apk