あらすじ
「*.keystore
ファイルをうっかり失くして、こう対処した。」
「*.keystore
ファイルはちゃんと管理しましょう。」というお話です。
発端
UnityでBuildしたものをPlayStoreにアップロードすると、Android App Bundle が誤った鍵で署名されています。
というメッセージが表示されました。何事だ??と確認すると、*.keystore
ファイルが消えていました。
Plastic SCM でバージョン管理していたはずですが、Check in
コマンドでステージングしたときに、アップロード内容に含め損ねていたようです。何と私が以前作成した*.keystore
はもうこの世にありません!
失くしたものは仕方がないので方法を探しましょう。
鍵
PlayConsoleにアップロードするときには、アプリ本体、apkまたはaabと一緒に鍵がアップロードされます。
この鍵は最初にアップロードされるときにPlayConsoleに登録され、以降のアップロードでは同じ鍵が必須です。
これは、鍵を持っていない人が勝手にアップロードするのを防ぎ、安全性を高めるのが目的ですね。
Unityではどうやって設定していたっけ?
Unityでは Player設定の中で設定できます。
- →Build Settings
- →Player Settings
- →Android
- →Publishing Settings
- →Project KeyStore
ここで、KeyStoreManagerを起動して*.keystore
ファイルを作成し、それをCustum KeyStoreでSelectしているはずです。
失くしたらどうする
まず、*.keystore
を失くしたら、アップロードできません。
そこで、新しく作成したもので再登録させてもらえるように、Googleさんにお願いします。
アップロードできない時に出てくるURLリンクから飛ぶと、このようなフォームがあります。
記入していくと、*.pem
ファイルを入力フォームにアップロードする必要があることが分かります。
これから使っていく新しく作成した*.keystore
の情報が必要だということです。
ここで、だれもが思うことは、「*.keystore
をアップロードしちゃダメなの?」でしょう。
しかし、PlayConsoleにアップロードする人が誰でもUnityを使っているかというと、それは違います。
Flutterかもしれないし、ReactNativeかもしれないし、Kotlinかもしれません。
そこで、*.keystore→*.pem
変換、というかエクスポート?が必要になります。
keystore→pem
手順を説明します。
まず、keytool
コマンドを使って*.keystore
から*.pem
を生成します。
※keytoolコマンドが使えない時は、JDKをインストールしてPathを設定しましょう。
(chocolateyでインストールするのがオヌヌメです。)
keytool -export -rfc -alias えいりあす -file upload_certificate.pem -keystore あなたのkeystoreふぁいる
Enterを押すと、パスワードを聞かれます。
キーストアのパスワードを入力してください:
UnityのKeystoreManagerで設定したパスワードを入力すると、
証明書がファイル<upload_certificate.pem>に保存されました
Warning:
JKSキーストアは独自の形式を使用しています。"keytool -importkeystore -srckeystore .\user.keystore -destkeystore .\user.keystore -deststoretype pkcs12"を使用する業界標 準の形式であるPKCS12に移行することをお薦め します。
保存されたことの報告に加えて、「業界標準を使いなさい」と、たしなめられます。
ひとまず、このupload_certificate.pem
を先ほどの入力フォームにアップロードしてしまいましょう。
これであとは必要な項目を記入したら、送信ボタンを押します。
上手くいくと、Google Play Developer Support の担当者さんから、このようなご連絡をいただけます。
こみ上げてくる気持ちを胸に、メールに記載いただいている時刻よりも前にアップロードすると、エラーメッセージが帰ってきます。
ですよね。そりゃそうですよ。だがしかし。
エラーメッセージがこんなに嬉しいことは、なかなか無いでしょう。
まとめ
間違えて消してしまうと手間がかかります。
また、Google Play Developer Supportの人にもご迷惑をお掛けします。
バックアップを取っておくなどの対策をしましょう。
Excelsior!