fix: enhance Android build process with improved keystore handling and error checks
This commit is contained in:
@@ -299,18 +299,20 @@ jobs:
|
|||||||
shell: powershell
|
shell: powershell
|
||||||
run: |
|
run: |
|
||||||
$env:PATH = "$env:USERPROFILE\.cargo\bin;$env:PATH"
|
$env:PATH = "$env:USERPROFILE\.cargo\bin;$env:PATH"
|
||||||
npm run tauri android build -- --target aarch64
|
npm run tauri android build -- --ci --target aarch64
|
||||||
env:
|
env:
|
||||||
ANDROID_HOME: ${{ env.ANDROID_HOME }}
|
ANDROID_HOME: ${{ env.ANDROID_HOME }}
|
||||||
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/25.2.9519653
|
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/25.2.9519653
|
||||||
RUSTUP_TOOLCHAIN: stable
|
RUSTUP_TOOLCHAIN: stable
|
||||||
|
CI: true
|
||||||
|
|
||||||
- name: Sign APK
|
- name: Sign APK
|
||||||
shell: powershell
|
shell: powershell
|
||||||
run: |
|
run: |
|
||||||
$unsignedApk = "src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release-unsigned.apk"
|
$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"
|
$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
|
# Find Android SDK
|
||||||
$androidHome = if ($env:ANDROID_HOME) { $env:ANDROID_HOME }
|
$androidHome = if ($env:ANDROID_HOME) { $env:ANDROID_HOME }
|
||||||
@@ -320,11 +322,24 @@ jobs:
|
|||||||
|
|
||||||
Write-Host "Using Android SDK at: $androidHome"
|
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)
|
# Use debug keystore for signing (create if missing)
|
||||||
if (-not (Test-Path $keystore)) {
|
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
|
# Find build tools
|
||||||
$buildTools = Get-ChildItem "$androidHome\build-tools" | Sort-Object Name -Descending | Select-Object -First 1
|
$buildTools = Get-ChildItem "$androidHome\build-tools" | Sort-Object Name -Descending | Select-Object -First 1
|
||||||
$apksigner = "$($buildTools.FullName)\apksigner.bat"
|
$apksigner = "$($buildTools.FullName)\apksigner.bat"
|
||||||
@@ -333,18 +348,30 @@ jobs:
|
|||||||
Write-Host "Using build tools: $($buildTools.FullName)"
|
Write-Host "Using build tools: $($buildTools.FullName)"
|
||||||
|
|
||||||
# Align the APK
|
# Align the APK
|
||||||
|
Write-Host "Aligning APK..."
|
||||||
& $zipalign -v -p 4 $unsignedApk "$unsignedApk.aligned"
|
& $zipalign -v -p 4 $unsignedApk "$unsignedApk.aligned"
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Error "Failed to align APK"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
# Sign the APK
|
# Sign the APK
|
||||||
|
Write-Host "Signing APK..."
|
||||||
& $apksigner sign --ks $keystore --ks-pass pass:android --key-pass pass:android --out $signedApk "$unsignedApk.aligned"
|
& $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
|
# Verify
|
||||||
|
Write-Host "Verifying signature..."
|
||||||
& $apksigner verify $signedApk
|
& $apksigner verify $signedApk
|
||||||
|
|
||||||
Write-Host "Signed APK created at: $signedApk"
|
Write-Host "Signed APK created at: $signedApk"
|
||||||
|
|
||||||
# Rename to final name
|
# Rename to final name
|
||||||
Copy-Item $signedApk "src-tauri/gen/android/app/build/outputs/apk/universal/release/Cinny-Android.apk"
|
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
|
- name: Upload APK
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
|
|||||||
Reference in New Issue
Block a user