- 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
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:
- Erstellt einen neuen 4096-Bit RSA-Keystore
- Generiert
app/simple-notes-release.jks - Erstellt
key.propertiesmit den Zugangsdaten - Zeigt Base64-kodierten Keystore für GitHub Secrets
- 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.fishzur 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.propertieslokal 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.propertiesmuss existieren (viacreate-keystore.fisherstellt)
Verwendung:
cd /home/liq/gitProjects/simple-notes-sync/android
./scripts/build-release-local.fish
Interaktive Auswahl:
- Standard Flavor (empfohlen)
- F-Droid Flavor
- Beide Flavors
Output:
app/build/outputs/apk/standard/release/- Signierte Standard APKsapp/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:
- 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 - Müssen identisch sein!
- Falls nicht: GitHub Secrets mit lokaler
key.propertiessynchronisieren
📚 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