Ok here we go. Najczęstszym sposobem na stworzenie niepodpisanego apk jest użycie linii poleceń:
./gradlew assemble<$Flavor><$BuildType>
Jest to całkiem podobne dla app bundle:
./gradlew bundle<$Flavor><$BuildType>
na przykład:
./gradlew assembleProdRelease // building apk./gradlew bundleProdRelease // building app bundle
Typowo, są to polecenia do budowania apk/app bundle, ale ludzie często dodają signingConfig do build.gradle, aby wykonać część podpisującą w tym samym czasie.
Tak więc, usuwając tę część w pliku build.gradle, jesteśmy dobrzy do tworzenia niepodpisanych apk/app bundle.
Zbudowany apk będzie hostowany w: build/outputs/apk/flavor/buildtype/
Apk bundle będzie w: build/outputs/bundle/flavorBuildType/
Zauważ, że ten apk nie może być zainstalowany na twoim urządzeniu bez podpisu. Otrzymasz błąd, jeśli spróbujesz go zainstalować:
Aby podpisać ten apk lub app bundle, najpierw użyjemy keytool do wygenerowania keystore (jeśli go nie masz), a następnie użyjemy jarsigner lub apksigner do podpisania apk lub app bundle z wygenerowanym keystore.
Generate keystore:
Wykonaj następujące polecenie:
keytool -genkey -v -keystore <release_keystore.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
Wtedy zostaniesz poproszony o kilka informacji, jak zwykle, ale najważniejsze z nich to hasło do keystore i hasło do aliasu. Po wygenerowaniu keystore, podpiszemy go za pomocą różnych opcji.
Sign an apk/app bundle with jarsigner
Zakładamy, że masz już zainstalowany JDK.
jarsigner -keystore <keystore_file> -storepass <storepass> -keypass <keypass> <unsigned_apk_file> <alias_name>
To polecenie nie generuje żadnego nowego pliku, ale niepodpisany apk zostanie podpisany bez żadnych widocznych zmian zewnętrznych (nazwa pliku i rozmiar pliku).
W przypadku app bundle, polecenie jest dokładnie takie samo, musimy tylko zmienić ścieżkę pliku apk na plik app bundle.
W rzeczywistości, jarsigner jest ogólnym narzędziem, które jest używane do podpisywania plików jar. Narzędziem najbardziej przystosowanym do podpisywania apk jest apksigner, który działa podobnie jak jarsigner, z wyjątkiem tego, że nie obsługuje podpisywania pakietów aplikacji.
Podpisz apk za pomocą apksigner
Ważne: jak sama nazwa wskazuje, apksigner jest tylko narzędziem do podpisywania apk, nie może podpisać pakietu aplikacji
Składnia jest tak samo prosta jak jarsigner:
apksigner sign --ks <keystore_file> <apk_file>
Po wykonaniu tej komendy, zostaniesz poproszony o hasło do keystore i hasło do aliasu. Wprowadź te informacje i gotowe.