【ReactNative】0.61未満のバージョンで作成したプロジェクトだとdebug.keystoreがgitignoreされる
はじめに
今回はReact Native
アプリでAndroid
のデバッグビルドを行なった際に遭遇したエラーについて紹介します。
具体的には、v0.61.0
未満のバージョンで作成したReact Native
プロジェクトで発生する可能性のあるエラーです。
なにが起きたか
1年ほど前にReact Native
で開発したアプリがあります。
当時はまだReact Native
に関する資料も今ほど多くなく、公式の英語と睨めっこしながらなんとか動くものを作り上げた小さなアプリです。
そのアプリに大きめの修正が入ることになり、それなりに時間をかけても良いということになりました。
「hooks
を使いたい+新しくリリースされた一部コンポーネントを使って冗長な記述を見直したい」と思い、いい機会なのでReact Native
のバージョンを上げて一通り見直していくことにしました。
随分と前の開発だったので、GitLab
からソースをclone
してきてreact-native
のバージョンアップを実行。
着手時点で0.60.5
だったバージョンを最新の0.63.4
に変更し、バージョンアップに伴う一通りの構文エラーを解消したあとでデバッグビルドをかけると下記のようなエラーに遭遇しました。
Keystore file '/android/app/debug.keystore' not found for signing config 'debug'.
なにやら見覚えのないエラー。
debug.keystore
はたしかreact-native init
を実行してプロジェクトを作成した時に自動生成されているはずだが・・・
v0.61
まではdebug.keystore
がignore
されているらしい
リモートリポジトリを参照してもdebug.keystore
は見つからず。
それもそのはずで、.gitignore
には下記の記述がありました。
*.keystore
なので、事の成り行きとしては以下の通り。
-
react-native init
でプロジェクトを作成(ここでdebug.keystore
も生成) - 色々修正してコミット&プッシュ(
.gitignore
の含まれるためdebug.keystore
はGit
管理せず) - プロジェクトを
clone
して諸々をセットアップしてデバッグビルド -
debug.keystore
がないため当該のエラー -
debug.keystore
はどこにも残っていない・・・!!
.gitignore
の*.keystore
はデフォルトで記載されているため、チーム開発だと頻発しそうです。
デバッグ用のkeystore
なんだからignore
しなくてもいいのに・・・
と思ってReact Native
の変更ログを見ていたらv0.61.0
- Add exception in .gitignore for debug.keystore to the android template.
どうやらそれらしい記述が!
当該のコミットを参照してみると・・・
*.keystore
+ !debug.keystore
v0.61.0
以降からdebug.keystore
がignore
に含まれなくなったようです。
従って今回のようにv0.61.0
未満のバージョンでreact-native init
を実行してプロジェクトを新規作成した場合はdebug.keystore
が.gitignore
に含まれたままの状態になります。
debug.keystore
を再生成」
対処法「同様の事象で困っている方は結構いるようで、下記のようなIssue
がありました。
対処法としてはシンプルでdebug.keystore
を再生成して.gitignore
に含めないようにするだけです。
再生成ですが以下のコマンドで行えます。
※android/app
ディレクトリで行います。
keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
コマンド中にあるandroiddebugkey
やandroid
といった記述はdebug.keystore
用のエイリアスやパスワードです。
デフォルトでは上記の値になっていますが、もしこの値を手動で変更してある場合は正しいものを設定するようにしましょう。
これでdebug.keystore
が生成され、デバッグビルドが通るようになりました。
まとめ
今回はReact Native
のv0.61.0
未満で新規作成したプロジェクトに関して、debug.keystore
が.gitignore
に含まれてしまう問題の経緯と対処法について紹介しました。
発生する状況が極めて限定的ですが、それゆえにハマるとなかなか時間を食ってしまうため備忘の意味もこめて記事にしました。
同様の問題でハマっている方の参考になれば幸いです。
Discussion