Ok here we go。 署名なしのapkを作成する最も一般的な方法は、コマンドラインを使用することです:
./gradlew assemble<$Flavor><$BuildType>
アプリバンドルについてもほぼ同様です:
./gradlew bundle<$Flavor><$BuildType>
例えば:
./gradlew assembleProdRelease // building apk./gradlew bundleProdRelease // building app bundle
一般的には、これらはapk/アプリバンドル構築のコマンドですが、署名の部分を同時に処理するためにbuild.gradleにsigningConfigを追加することが多いのですが、その場合は、署名は、assembly.config.phpを使用します。
したがって、build.gradle ファイルのこの部分を削除すれば、署名のない apk/app バンドルを作成するのに適しているのです。
ビルドされた apk は build/outputs/apk/flavor/buildtype/
アプリバンドルは build/outputs/bundle/flavorBuildType/
この apk は署名されていないとデバイスにインストールできないことに注意してください。 インストールしようとするとエラーが発生します。
その apk またはアプリ バンドルに署名するには、まず keytool を使用して鍵ストアを生成し (鍵ストアを持っていない場合)、次に jarsigner または apksigner を使用して、生成した鍵ストアで apk またはアプリ バンドルに署名をします。
Generate keystore:
Execute the command following:
keytool -genkey -v -keystore <release_keystore.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
Then you are asked for some information as usual but the most important ones are the keystore password and the alias password.鍵ストアのパスワードとエイリアスパスワードは、通常通り入力します。
Sign an apk/app bundle with jarsigner
すでに JDK がインストールされていると仮定します。
jarsigner -keystore <keystore_file> -storepass <storepass> -keypass <keypass> <unsigned_apk_file> <alias_name>
このコマンドは新しいファイルを生成しませんが、署名されていない apk は目に見える外部の変更 (ファイル名とファイル サイズ) なしで署名されるようになります。
アプリ バンドルでは、コマンドはまったく同じで、apk ファイルのパスをアプリ バンドル ファイルに変更するだけです。
実際、jarsigner は jar ファイルに署名するために使用される一般ツールです。 apkへの署名に最も適したツールはapksignerで、jarsignerと同様に動作しますが、アプリバンドルへの署名はサポートされていません。
Sign an apk with apksigner
Important: その名前が示すように、apksigner は apk サイナーであり、App Bundle
Syntax for this is as straightforward as jarsigner:
apksigner sign --ks <keystore_file> <apk_file>
After execution this command, you will be asked for keystore password and alias password. これらの情報を入力して完了です。