Skip to content

d

d #26

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 signing
run: |
# 创建临时签名配置脚本
cat << EOF > signing-config.gradle
android {
signingConfigs {
release {
storeFile file('my-release-key.keystore')
storePassword 'password'
keyAlias 'my-key-alias'
keyPassword 'password'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
EOF
- name: Build signed APK
run: |
# 应用签名配置并构建
./gradlew -Psigning-config.gradle assembleRelease
ls -l app/build/outputs/apk/release
- name: Verify APK signature
run: |
# 设置apksigner路径
BUILD_TOOLS_DIR=$(ls $ANDROID_HOME/build-tools | sort -V | tail -n 1)
APKSIGNER="$ANDROID_HOME/build-tools/$BUILD_TOOLS_DIR/apksigner"
# 查找已签名的APK(排除未签名文件)
apk_path=$(find app/build/outputs/apk/release -name "*.apk" ! -name "*-unsigned*" | head -n 1)
if [ ! -f "$apk_path" ]; then
echo "❌ Signed APK not found!"
find app/build/outputs/apk/release -type f
exit 1
fi
echo "Verifying signed APK at: $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