Ok here we go. Nejčastěji se nepodepsaná apk vytváří pomocí příkazového řádku:
./gradlew assemble<$Flavor><$BuildType>
Pro app bundle je to dost podobné:
./gradlew bundle<$Flavor><$BuildType>
například:
./gradlew assembleProdRelease // building apk./gradlew bundleProdRelease // building app bundle
Typicky se jedná o příkazy pro sestavení apk/app bundle, ale lidé často přidávají signingConfig do build.gradle, aby zároveň provedli i část podepisování.
Odstraněním této části v souboru build.gradle tedy můžeme vytvořit nepodepsaný balíček apk/app.
Sestavená apk bude umístěna v: build/outputs/apk/flavor/buildtype/
Svazek aplikací bude v: build/outputs/bundle/flavorBuildType/
Všimněte si, že tuto apk nelze nainstalovat do zařízení, aniž by byla podepsána. Pokud se ji pokusíte nainstalovat, zobrazí se chyba:
Pro podepsání této apk nebo app bundle nejprve pomocí keytool vygenerujeme úložiště klíčů (pokud žádné nemáte) a poté pomocí jarsigner nebo apksigner podepíšeme apk nebo app bundle pomocí vygenerovaného úložiště klíčů.
Generate keystore:
Vykonejte následující příkaz:
keytool -genkey -v -keystore <release_keystore.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
Poté budete jako obvykle požádáni o některé informace, ale nejdůležitější jsou heslo keystore a heslo aliasu. Po vygenerování úložiště klíčů jej podepíšeme pomocí různých možností.
Podepsání balíčku apk/app pomocí jarsigner
Předpokládejte, že již máte nainstalované JDK.
jarsigner -keystore <keystore_file> -storepass <storepass> -keypass <keypass> <unsigned_apk_file> <alias_name>
Tento příkaz nevytvoří žádný nový soubor, ale nepodepsaná apk se stane podepsanou bez viditelných vnějších změn (název souboru a velikost souboru).
S balíčkem aplikací je příkaz úplně stejný, jen musíme změnit cestu k souboru apk na soubor balíčku aplikací.
Jarsigner je vlastně obecný nástroj, který slouží k podepsání souboru jar. Nejpřizpůsobivějším nástrojem pro podepisování apk je apksigner, který funguje podobně jako jarsigner, jen nepodporuje podepisování balíčku aplikací.
Podepište apk pomocí apksigner
Důležité: jak název napovídá, apksigner je pouze podepisovač apk, neumí podepsat balíček aplikací
Syntaxe je stejně jednoduchá jako u jarsigner:
apksigner sign --ks <keystore_file> <apk_file>
Po provedení tohoto příkazu budete požádáni o heslo keystore a heslo aliasu. Zadejte tyto informace a pak jsme hotovi.