diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index eb65abe..ebe3908 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -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