Android Studioでリリース版APKやAABをビルドしたときに、「Keystore file ~ not found for signing config ‘release’」と表示され、署名処理でビルドが止まることがあります。
エラー内容
Execution failed for task ':app:validateSigningRelease'.
> Keystore file '/path/to/upload-keystore.jks' not found for signing config 'release'.
このエラーは、release用の署名設定で指定しているkeystoreファイルをGradleが見つけられない場合に発生します。ファイル自体が存在しない場合だけでなく、パスの書き方や相対パスの基準が原因になることもあります。
主な原因
- keystoreファイルを移動・削除した
storeFileに指定したパスが間違っている- 相対パスの基準を誤っている
key.propertiesの値に不要な引用符や記号が入っている- Windowsのバックスラッシュやエスケープの扱いでパスが崩れている
- 別PCやCI環境でkeystoreを配置していない
確認手順1:エラーに表示されたパスを確認する
まず、エラーログに表示されたkeystoreのフルパスをそのまま確認します。想定している場所と違うディレクトリが先頭に付いている場合は、相対パスの指定方法に問題がある可能性があります。
特にFlutterやマルチモジュール構成では、file(...)がどのGradleファイルを基準に解決されているかを確認してください。
解決方法1:keystoreの実際の場所に合わせてstoreFileを修正する
Groovy形式のbuild.gradleでは、たとえば次のように指定します。
android {
signingConfigs {
release {
storeFile file('upload-keystore.jks')
storePassword 'yourStorePassword'
keyAlias 'upload'
keyPassword 'yourKeyPassword'
}
}
}
upload-keystore.jksをappモジュール直下に置く場合は、このような相対指定で解決できることがあります。
解決方法2:絶対パスで切り分ける
相対パスが原因かどうか分からない場合は、一時的に絶対パスを指定して確認すると切り分けしやすくなります。
storeFile file('/Users/username/keys/upload-keystore.jks')
Windowsでは、スラッシュを使って次のように記述すると扱いやすい場合があります。
storeFile file('C:/Users/username/keys/upload-keystore.jks')
絶対パスをGitへコミットすると、他のPCで動かなくなるため、本番運用では環境変数やpropertiesファイルを使う構成が安全です。
解決方法3:key.propertiesのstoreFileを確認する
Flutterなどでkey.propertiesを使っている場合は、storeFileの値に余計な引用符が入っていないか確認します。
storePassword=yourStorePassword
keyPassword=yourKeyPassword
keyAlias=upload
storeFile=C:/Users/username/keys/upload-keystore.jks
たとえばstoreFile="C:/Users/..."のように引用符を値の一部として読み込んでしまう構成では、実在しないパスとして解釈されることがあります。
解決方法4:keystoreファイルの存在をコマンドで確認する
macOS・Linuxでは次のように確認できます。
ls -l /path/to/upload-keystore.jks
Javaのkeytoolでkeystoreを読み取れるか確認する方法もあります。
keytool -list -v -keystore /path/to/upload-keystore.jks
ファイルが見つからない場合は配置場所を修正し、読み取りエラーになる場合はkeystore自体やパスワードも確認します。
解決方法5:別PCやCI環境ではkeystoreを用意する
ローカルでは成功するのに別PCやCIで失敗する場合、keystoreがGit管理外になっていて配置されていないことがあります。秘密鍵を公開リポジトリへ置くのではなく、CIのSecretや安全な保管場所からビルド時に配置してください。
修正後に行うこと
- keystoreファイルが指定場所に存在することを確認する
storeFileまたはkey.propertiesのパスを修正する- Gradle Syncを実行する
- Clean Projectまたは再ビルドを行う
- release APK/AABをもう一度作成する
注意点
公開済みアプリの更新には、既存アプリに対応する正しい署名鍵が必要です。エラーを避けるためだけに新しいkeystoreへ変更すると、既存アプリを更新できなくなる場合があります。
Androidの公式ドキュメントでも、releaseビルド用の署名設定ではkeystoreを安全に保管し、storeFileなどを正しく設定することが案内されています。
まとめ
「Keystore file ~ not found for signing config ‘release’」が出た場合は、まずエラーに表示された実際のパスとkeystoreの配置場所を比較してください。storeFile、key.properties、相対パス、Windowsのパス表記、CI環境での配置を順に確認すると原因を特定しやすくなります。
