FlutterアプリをGoogle Playにリリースするため、keystoreファイルを作成しようとしたところ失敗しました。
その解決方法をメモします。
PCはM1 ProのMacbookを使用しています。
現象(keystoreファイルが作成できない)
keystoreファイルの作成
$ keytool -genkey -v -keystore {出力先パス}/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
これをターミナルで実行すると、次のエラーが出ました。
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
つまり、PCにJavaが無いということになります。
解決方法
M1 MacにJavaをインストール
Javaをインストールします。
$ brew info java
これを実行すると、
==> Downloading https://formulae.brew.sh/api/formula.jws.json
######################################################################## 100.0%
==> Downloading https://formulae.brew.sh/api/cask.jws.json
######################################################################## 100.0%
==> openjdk: stable 20.0.1 (bottled) [keg-only]
Development kit for the Java programming language
https://openjdk.java.net/
Not installed
(略)
ログがわ~っと出力されました。
次に、以下を実行してjavaをインストールします。
$ brew install java
完了までしばらく待ちます。
==> Fetching dependencies for openjdk: giflib, libpng, freetype, fontconfig, pcre2, glib, xorgproto, libxau, libxdmcp, libxcb, libx11, libxext, libxrender, lzo, pixman, cairo, graphite2, icu4c, harfbuzz, jpeg-turbo, xz, lz4, zstd, libtiff and little-cms2
==> Fetching giflib
==> Downloading https://ghcr.io/v2/homebrew/core/giflib/manifests/5.2.1
(中略)
==> git
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.
Subversion interoperability (git-svn) is now in the `git-svn` formula.
zsh completions and functions have been installed to:
/opt/homebrew/share/zsh/site-functions
再びログがわ~っと出力されました。
さて、Javaがインストールされたかどうか、次のコマンドで確認します。
$ java --version
結果は…
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
ダメでした。悲しみに暮れます…
なんかコレを実行する必要があるようです。
$ sudo ln -sfn $(brew --prefix)/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
パスワードを聞かれたら、PCにログインする際のパスワードを入力してEnterします。
再び「java –version」を実行すると、
openjdk 20.0.1 2023-04-18
OpenJDK Runtime Environment Homebrew (build 20.0.1)
OpenJDK 64-Bit Server VM Homebrew (build 20.0.1, mixed mode, sharing)
うまくいきました!
keystoreファイルの作成
さて、keystoreファイルを作成します。
$ keytool -genkey -v -keystore {出力先パス}/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
識別名を入力します。サブコンポーネントを空のままにする場合はドット(.)を1つ入力し、中カッコ内のデフォルト値を使用する場合は[ENTER]を押します。
姓名は何ですか。
[Unknown]:
組織単位名は何ですか。
[Unknown]:
組織名は何ですか。
[Unknown]:
都市名または地域名は何ですか。
[Unknown]:
都道府県名または州名は何ですか。
[Unknown]:
この単位に該当する2文字の国コードは何ですか。
[Unknown]: JP
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=JPでよろしいですか。
[いいえ]: はい
10,000日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA384withRSA)を生成しています
ディレクトリ名: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=JP
[/Users/hashcode/Documents/GooglePlayKeystore/key.jksを格納中]
ポイントは次の通りです。
- {出力先パス}には任意の出力先パスを指定(パス内にスペースを含めない)
- キーストアのパスワードを任意に入力してEnter、再入力してEnter
- [Unknown]: はそのままEnter
- 2文字の国コードはJPを入力してEnter
- よろしいですか。[いいえ]:は「はい」を入力してEnter
さて、{出力先パス}で指定したパスに「key.jks」が出力されていれば作業完了です。
以上になります。
誰かの助けになれば幸いです。