From edefcab01ce7e9b50a4a27424d9b654c569d3033 Mon Sep 17 00:00:00 2001 From: Bytemalte Date: Fri, 30 Jan 2026 21:26:41 +0100 Subject: [PATCH] =?UTF-8?q?Build:=20Android-Signierung=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/android.yaml | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/android.yaml b/.gitea/workflows/android.yaml index 55cc644..9371c54 100644 --- a/.gitea/workflows/android.yaml +++ b/.gitea/workflows/android.yaml @@ -58,34 +58,41 @@ jobs: # 1. Frontend bauen trunk build --release - # 2. Android Build initialisieren falls nötig und bauen + # 2. Android Build initialisieren & bauen if [ ! -d "src-tauri/gen/android" ]; then cargo-tauri android init fi cargo-tauri android build --target aarch64 --apk true # 3. APK manuell signieren - echo "Erstelle Keystore aus Secret..." - # printf und tr -d entfernen alle Whitespaces, um java.io.EOFException zu vermeiden - printf "%s" "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | tr -d '[:space:]' | base64 -d > release.keystore + echo "Verarbeite Keystore-Secret..." - if [ ! -s release.keystore ]; then - echo "FEHLER: Keystore-Datei ist leer! Prüfe das Secret ANDROID_KEYSTORE_BASE64." + # Wir speichern das Secret in einer Datei, um Probleme mit Shell-Argument-Limits zu vermeiden + cat < keystore.base64 + ${{ secrets.ANDROID_KEYSTORE_BASE64 }} + EOF + + # Wir löschen ALLES, was kein valides Base64-Zeichen ist (Space, Newlines, etc.) + tr -dc 'a-zA-Z0-9+/=' < keystore.base64 | base64 -d > release.keystore + + # Validierung der Dateigröße + FILE_SIZE=$(stat -c%s release.keystore) + echo "Dekodierte Keystore-Größe: $FILE_SIZE Bytes" + + if [ "$FILE_SIZE" -lt 100 ]; then + echo "FEHLER: Keystore ist korrupt oder zu klein!" exit 1 fi echo "Suche unsignierte APK..." UNSIGNED_APK=$(find src-tauri/gen/android/app/build/outputs/apk/universal/release -name "*-unsigned.apk" | head -n 1) if [ -z "$UNSIGNED_APK" ]; then - echo "FEHLER: Keine unsignierte APK gefunden!" + echo "FEHLER: Keine APK gefunden!" exit 1 fi - echo "Gefunden: $UNSIGNED_APK" echo "Suche apksigner..." - # Findet die aktuellste Version der Build-Tools (z.B. 35.0.0) APKSIGNER=$(find $ANDROID_HOME/build-tools -name apksigner | sort -r | head -n 1) - echo "Nutze apksigner unter: $APKSIGNER" $APKSIGNER sign --ks release.keystore \ --ks-key-alias "${{ secrets.ANDROID_KEY_ALIAS }}" \ @@ -95,7 +102,7 @@ jobs: --out Marstemedia-Signed.apk \ "$UNSIGNED_APK" - echo "Signierung abgeschlossen!" + echo "Signierung erfolgreich!" env: JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64