Warum müssen APK-Dateien signiert werden?
Jede Android-App muss vor der Installation digital signiert werden. Die Signatur dient mehreren Zwecken:
- Überprüft die Identität des App-Entwicklers
- Stellt sicher, dass die APK nicht manipuliert wurde
- Ermöglicht Android, App-Updates mit dem Original abzugleichen
- Erforderlich für die Installation auf allen Android-Geräten
Desktop-Tool erforderlich
Für die APK-Signatur sind Befehlszeilentools (JDK/Android SDK) erforderlich. Dies ist in einem Webbrowser nicht möglich. Befolgen Sie die nachstehende Anleitung, um APKs auf Ihrem Computer zu signieren.
Methode 1: Mit apksigner signieren (empfohlen)
apksigner ist Googles offizielles APK-Signaturtool, das in den Android SDK Build Tools enthalten ist.
Schritt 1: Generieren Sie einen Keystore
keytool -genkey -v -keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-key-alias
Schritt 2: Signieren Sie die APK
apksigner sign --ks my-release-key.jks \
--ks-key-alias my-key-alias \
--out signed-app.apk unsigned-app.apk
Schritt 3: Überprüfen Sie die Signatur
apksigner verify --verbose signed-app.apk
Methode 2: Mit Jarsigner signieren (Legacy)
# Sign
jarsigner -verbose -sigalg SHA256withRSA \
-digestalg SHA-256 \
-keystore my-release-key.jks \
app-unsigned.apk my-key-alias
# Verify
jarsigner -verify -verbose app-signed.apk
Schritt 4: Zipalign (Wichtig!)
Optimieren Sie nach dem Signieren die APK mit zipalign:
zipalign -v 4 signed-app.apk aligned-app.apk
Debug-Signierung (zum Testen)
Zu Testzwecken können Sie den standardmäßigen Android-Debug-Keystore verwenden:
# Location of debug keystore:
# Linux/Mac: ~/.android/debug.keystore
# Windows: C:\Users\{USERNAME}\.android\debug.keystore
# Sign with debug key
apksigner sign --ks ~/.android/debug.keystore \
--ks-key-alias androiddebugkey \
--ks-pass pass:android \
app.apk
Vergleich der Signiertools
| Metrik | apksigner | Jarsigner |
|---|---|---|
| V1-Signatur | ||
| V2-Signatur | ||
| V3-Signatur | ||
| Empfohlen | Vermächtnis |
APK-Signer – Häufig gestellte Fragen
Häufige Fragen zur APK-Signatur, Keystores und Android-Code-Signierung
Warum die Ausrichtungsreihenfolge (zipalign vor apksigner) auf Android 11–15 wichtig ist
Einer der häufigsten Fehler, die Entwickler und Modder beim Signieren eines geänderten oder zusammengeführten APK machen, besteht darin, zipalign nach zum Signieren des Pakets auszuführen – oder das alte Dienstprogramm jarsigner von Java anstelle von Googles Android SDK apksigner zu verwenden. Da APK Signature Scheme v2 und v3 einen kryptografischen Hash über das gesamte Binärlayout des ZIP-Archivs berechnen, wird durch das Ändern von Byte-Offsets mit zipalign nach dem Signieren der v2/v3-Signaturblock sofort ungültig.
Ab Android 11 (API-Level 30) und strikt auf Android 14 und 15 durchgesetzt, erfordert PackageManager zwei nicht verhandelbare Bedingungen für alle APKs, die auf moderne SDK-Level abzielen:
- Unkomprimiertes 4-Byte-ausgerichtetes resources.arsc: Die kompilierte Ressourcentabelle (resources.arsc) muss unkomprimiert (STORED) gespeichert und an einer 4-Byte-Grenze ausgerichtet werden, damit Android sie direkt dem Speicher zuordnen kann (mmap), ohne sie in den RAM zu kopieren. Führen Sie immer die zipalign -p -f -v 4 input.apk aligned.apk vor-Signatur aus.
- Obligatorischer Signaturblock v2+: Das Signieren eines APK, das auf die API 30+ abzielt, mit jarsigner (das nur eine META-INF/-Signatur der Version 1 schreibt) führt dazu, dass Android 11–15 die Installation mit INSTALL_PARSE_FAILED_NO_CERTIFICATES ablehnt. Verwenden Sie den interaktiven Befehlsgenerator oben, um den genauen apksigner --v2-signing-enabled=true-Befehl für Ihren Keystore zu erstellen, oder überprüfen Sie Ihre signierte Ausgabe in unserem APK-Signaturprüfer.