fix: enhance Android build process with improved keystore handling and error checks
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user