【Flutter】keystoreファイルが作成できない

Flutter

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」が出力されていれば作業完了です。

以上になります。

誰かの助けになれば幸いです。

参考サイト(keystoreファイルの作成)

参考サイト(MacにJavaをインストール)

タイトルとURLをコピーしました