Files
inventory69 1338da9dde 🔐 Add keystore management scripts and documentation [skip ci]
- Add create-keystore.fish: Generate new release keystore with auto-generated passwords
- Add verify-secrets.fish: Verify GitHub Secrets and local keystore setup
- Add build-release-local.fish: Build signed release APKs locally
- Add LOCAL_BUILDS.md: Documentation for local release builds
- Add key.properties.example: Template for signing configuration
- Update android/.gitignore: Protect sensitive keystore files
- Integrate GitHub CLI for automatic secret management
- All scripts support both manual and automated workflows
2025-12-23 18:13:12 +01:00
..

Android Build Scripts

Nützliche Scripts für die lokale Entwicklung und Release-Erstellung.

📜 Verfügbare Scripts

1. create-keystore.fish - Neuen Release-Keystore erstellen

Wann verwenden:

  • Erstmaliges Setup des Projekts
  • Keystore-Passwort vergessen
  • Keystore beschädigt oder verloren
  • NICHT verwenden, wenn bereits User existieren (macht alte APKs inkompatibel!)

Verwendung:

cd /home/liq/gitProjects/simple-notes-sync/android
./scripts/create-keystore.fish

Das Script:

  1. Erstellt einen neuen 4096-Bit RSA-Keystore
  2. Generiert app/simple-notes-release.jks
  3. Erstellt key.properties mit den Zugangsdaten
  4. Zeigt Base64-kodierten Keystore für GitHub Secrets
  5. Gibt SHA256-Fingerprint zur Verifikation aus

Output:

  • app/simple-notes-release.jks - Der Keystore
  • key.properties - Lokale Signing-Konfiguration
  • 📋 GitHub Secrets zum Kopieren

2. verify-secrets.fish - GitHub Secrets & Keystore verifizieren

Wann verwenden:

  • Nach create-keystore.fish zur Verifikation
  • Vor einem Release-Build zum Troubleshooting
  • Um zu prüfen ob alles korrekt konfiguriert ist

Verwendung:

cd /home/liq/gitProjects/simple-notes-sync/android
./scripts/verify-secrets.fish

Das Script prüft:

  • GitHub CLI Installation & Authentifizierung
  • Ob alle 4 erforderlichen GitHub Secrets gesetzt sind
  • Ob key.properties lokal existiert
  • Ob der Keystore existiert
  • Zeigt SHA256-Fingerprint des Keystores

Output:

  • Status aller Secrets
  • Status der lokalen Konfiguration
  • 💡 Empfehlungen bei Problemen

3. build-release-local.fish - Lokal signierte Release-APKs bauen

Wann verwenden:

  • Lokale Test-APKs erstellen, die mit Releases kompatibel sind
  • APKs vor dem GitHub Release testen
  • Schneller als GitHub Actions für Tests

Voraussetzung:

  • key.properties muss existieren (via create-keystore.fish erstellt)

Verwendung:

cd /home/liq/gitProjects/simple-notes-sync/android
./scripts/build-release-local.fish

Interaktive Auswahl:

  1. Standard Flavor (empfohlen)
  2. F-Droid Flavor
  3. Beide Flavors

Output:

  • app/build/outputs/apk/standard/release/ - Signierte Standard APKs
  • app/build/outputs/apk/fdroid/release/ - Signierte F-Droid APKs

🚀 Kompletter Workflow (von 0 auf Release)

Erstmaliges Setup

cd /home/liq/gitProjects/simple-notes-sync/android

# 1. Keystore erstellen (mit automatischer GitHub Secrets-Konfiguration!)
./scripts/create-keystore.fish
# → Folge den Anweisungen, speichere die Passwörter!
# → GitHub Secrets werden automatisch via GitHub CLI gesetzt

# 2. Verifiziere die Konfiguration
./scripts/verify-secrets.fish
# → Prüft ob alle Secrets gesetzt sind
# → Zeigt Keystore-Informationen

# 3. Teste lokalen Build
./scripts/build-release-local.fish
# → Wähle "1" für Standard Flavor

# 4. Verifiziere Signatur
keytool -printcert -jarfile app/build/outputs/apk/standard/release/app-standard-universal-release.apk

Vor jedem Release

# 1. Code committen und pushen
git add .
git commit -m "✨ Neue Features"
git push origin main

# 2. GitHub Actions erstellt automatisch Release
# → Workflow läuft: .github/workflows/build-production-apk.yml
# → Erstellt Release mit signierten APKs

# Optional: Lokalen Test-Build vorher
./scripts/build-release-local.fish

🔐 Sicherheitshinweise

⚠️ Diese Dateien NIEMALS committen:

  • key.properties - Enthält Keystore-Passwörter
  • *.jks / *.keystore - Der Keystore selbst
  • Beide sind bereits in .gitignore

Diese Werte sicher speichern:

  • Keystore-Passwort
  • Key-Alias
  • Key-Passwort
  • Base64-kodierter Keystore (für GitHub Secrets)

Empfehlung: Nutze einen Passwort-Manager (Bitwarden, 1Password, etc.)


🛠️ Troubleshooting

"Keystore not found"

# Prüfe ob Keystore existiert
ls -la app/simple-notes-release.jks

# Falls nicht: Neu erstellen
./scripts/create-keystore.fish

"key.properties not found"

# Prüfe ob Datei existiert
ls -la key.properties

# Falls nicht: Keystore neu erstellen oder manuell anlegen
./scripts/create-keystore.fish

"Signature mismatch" beim App-Update

Problem: Lokaler Build hat andere Signatur als GitHub Release

Ursache: Unterschiedliche Keystores oder Passwörter

Lösung:

  1. Vergleiche SHA256-Fingerprints:
    # Lokal
    keytool -list -v -keystore app/simple-notes-release.jks
    
    # GitHub Release-APK
    keytool -printcert -jarfile ~/Downloads/simple-notes-v1.1.0.apk
    
  2. Müssen identisch sein!
  3. Falls nicht: GitHub Secrets mit lokaler key.properties synchronisieren

📚 Weitere Dokumentation

  • ../LOCAL_BUILDS.md - Detaillierte Anleitung für lokale Builds
  • ../.github/workflows/build-production-apk.yml - GitHub Actions Workflow
  • ../app/build.gradle.kts - Build-Konfiguration