Zautomatyzowany proces:
Użyj tego narzędzia (używa nowego apksignera od Google):
https://github.com/patrickfav/uber-apk-signer
Zastrzeżenie: jestem programistą :)
Proces ręczny:
Krok 1: Wygeneruj magazyn kluczy (tylko raz)
Musisz raz wygenerować magazyn kluczy i użyć go do podpisania swojego unsigned
apk. Skorzystaj z dostarczonego przez JDK wkeytool
%JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
Krok 2 lub 4: Zipalign
zipalign
które jest narzędziem dostarczanym przez Android SDK znaleziony np. %ANDROID_HOME%/sdk/build-tools/24.0.2/
jest obowiązkowym krokiem optymalizacji, jeśli chcesz przesłać apk do Sklepu Play.
zipalign -p 4 my.apk my-aligned.apk
Uwaga: w przypadku korzystania ze starego jarsigner
należy wykonać zipalign PO podpisaniu. Korzystając z nowej apksigner
metody robisz to PRZED podpisaniem (mylące, wiem). Wywołanie zipalign przed apksigner działa dobrze, ponieważ apksigner zachowuje wyrównanie i kompresję APK (w przeciwieństwie do jarsigner).
Możesz sprawdzić wyrównanie za pomocą
zipalign -c 4 my-aligned.apk
Krok 3: Podpisz i zweryfikuj
Korzystanie z narzędzi do kompilacji 24.0.2 i starszych
Użyj jarsigner
które, podobnie jak keytool, jest dostarczane z dystrybucją JDK znalezioną w %JAVA_HOME%/bin/
i używaj go w następujący sposób:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name
i można je zweryfikować za pomocą
jarsigner -verify -verbose my_application.apk
Korzystanie z narzędzi do kompilacji 24.0.3 i nowszych
Android 7.0 wprowadza APK Signature Scheme v2, nowy schemat podpisywania aplikacji, który zapewnia krótszy czas instalacji aplikacji i lepszą ochronę przed nieautoryzowanymi zmianami w plikach APK (zobacz tutaj i tutaj, aby uzyskać więcej informacji). Dlatego firma Google zaimplementowała własnego sygnatariusza apk o nazwieapksigner
(duh!). Plik skryptu można znaleźć w %ANDROID_HOME%/sdk/build-tools/24.0.3/
( plik .jar znajduje się w /lib
podfolderze). Użyj tego w ten sposób
apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name
i można je zweryfikować za pomocą
apksigner verify my-app.apk
Oficjalną dokumentację można znaleźć tutaj.