fix: enhance Android build process with improved keystore handling and error checks

This commit is contained in:
2026-02-05 04:02:32 +11:00
parent 7296b0cd34
commit 579b77e8d5

View File

@@ -299,18 +299,20 @@ jobs:
shell: powershell
run: |
$env:PATH = "$env:USERPROFILE\.cargo\bin;$env:PATH"
npm run tauri android build -- --target aarch64
npm run tauri android build -- --ci --target aarch64
env:
ANDROID_HOME: ${{ env.ANDROID_HOME }}
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/25.2.9519653
RUSTUP_TOOLCHAIN: stable
CI: true
- name: Sign APK
shell: powershell
run: |
$unsignedApk = "src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release-unsigned.apk"
$signedApk = "src-tauri/gen/android/app/build/outputs/apk/universal/release/cinny-release.apk"
$keystore = "$env:USERPROFILE\.android\debug.keystore"
$keystoreDir = "$env:USERPROFILE\.android"
$keystore = "$keystoreDir\debug.keystore"
# Find Android SDK
$androidHome = if ($env:ANDROID_HOME) { $env:ANDROID_HOME }
@@ -320,11 +322,24 @@ jobs:
Write-Host "Using Android SDK at: $androidHome"
# Ensure keystore directory exists
if (-not (Test-Path $keystoreDir)) {
New-Item -ItemType Directory -Path $keystoreDir -Force | Out-Null
}
# Use debug keystore for signing (create if missing)
if (-not (Test-Path $keystore)) {
keytool -genkey -v -keystore $keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
Write-Host "Creating debug keystore..."
# Use -noprompt to avoid any interactive prompts
& keytool -genkeypair -noprompt -keystore $keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
if ($LASTEXITCODE -ne 0) {
Write-Error "Failed to create keystore"
exit 1
}
}
Write-Host "Using keystore: $keystore"
# Find build tools
$buildTools = Get-ChildItem "$androidHome\build-tools" | Sort-Object Name -Descending | Select-Object -First 1
$apksigner = "$($buildTools.FullName)\apksigner.bat"
@@ -333,18 +348,30 @@ jobs:
Write-Host "Using build tools: $($buildTools.FullName)"
# Align the APK
Write-Host "Aligning APK..."
& $zipalign -v -p 4 $unsignedApk "$unsignedApk.aligned"
if ($LASTEXITCODE -ne 0) {
Write-Error "Failed to align APK"
exit 1
}
# Sign the APK
Write-Host "Signing APK..."
& $apksigner sign --ks $keystore --ks-pass pass:android --key-pass pass:android --out $signedApk "$unsignedApk.aligned"
if ($LASTEXITCODE -ne 0) {
Write-Error "Failed to sign APK"
exit 1
}
# Verify
Write-Host "Verifying signature..."
& $apksigner verify $signedApk
Write-Host "Signed APK created at: $signedApk"
# Rename to final name
Copy-Item $signedApk "src-tauri/gen/android/app/build/outputs/apk/universal/release/Cinny-Android.apk"
Write-Host "Done! APK ready at: Cinny-Android.apk"
- name: Upload APK
uses: actions/upload-artifact@v3