Ok here we go. Der häufigste Weg, eine unsignierte apk zu erstellen, ist über die Kommandozeile:
./gradlew assemble<$Flavor><$BuildType>
Bei einem App-Bundle ist es ähnlich:
./gradlew bundle<$Flavor><$BuildType>
zum Beispiel:
./gradlew assembleProdRelease // building apk./gradlew bundleProdRelease // building app bundle
Typischerweise sind dies die Befehle für das Erstellen einer apk/eines App-Bundles, aber die Leute fügen oft die signingConfig zu build.gradle hinzu, um den Teil des Signierens gleich mit zu erledigen.
Wenn wir also diesen Teil in der build.gradle-Datei entfernen, können wir ein unsigniertes apk/App-Bundle erstellen.
Die erstellte apk wird in: build/outputs/apk/flavor/buildtype/
Das App-Bundle wird in: build/outputs/bundle/flavorBuildType/
Bitte beachten Sie, dass diese apk nicht auf Ihrem Gerät installiert werden kann, ohne signiert zu sein. Sie erhalten eine Fehlermeldung, wenn Sie versuchen, sie zu installieren:
Um diese Apk oder das App-Bundle zu signieren, verwenden wir zunächst keytool, um einen Keystore zu generieren (falls Sie keinen haben) und verwenden dann jarsigner oder apksigner, um die Apk oder das App-Bundle mit dem generierten Keystore zu signieren.
Keystore generieren:
Führen Sie den folgenden Befehl aus:
keytool -genkey -v -keystore <release_keystore.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
Dann werden Sie wie üblich nach einigen Informationen gefragt, aber die wichtigsten sind das Keystore-Passwort und das Alias-Passwort. Nachdem wir den Keystore generiert haben, werden wir ihn mit verschiedenen Optionen signieren.
Signieren Sie ein apk/App-Bundle mit jarsigner
Angenommen, Sie haben bereits ein JDK installiert.
jarsigner -keystore <keystore_file> -storepass <storepass> -keypass <keypass> <unsigned_apk_file> <alias_name>
Dieser Befehl generiert keine neue Datei, aber die unsignierte apk wird ohne sichtbare äußere Änderungen (Dateiname und Dateigröße) signiert.
Bei einem App-Bundle ist der Befehl genau derselbe, wir müssen nur den Pfad der apk-Datei in die App-Bundle-Datei ändern.
In der Tat ist jarsigner ein allgemeines Tool, das zum Signieren einer jar-Datei verwendet wird. Das Tool, das sich am besten zum Signieren einer apk eignet, ist apksigner, das ähnlich wie jarsigner funktioniert, außer dass es das Signieren eines App-Bundles nicht unterstützt.
Signiere eine apk mit apksigner
Wichtig: wie der Name schon sagt, ist apksigner nur ein apk-Signierer, es kann kein App-Bundle signieren
Die Syntax dafür ist genauso einfach wie bei jarsigner:
apksigner sign --ks <keystore_file> <apk_file>
Nach der Ausführung dieses Befehls wirst du nach dem Keystore-Passwort und dem Alias-Passwort gefragt. Geben Sie diese Informationen ein und wir sind fertig.