概要
新任者の端末内に研修用の簡単なReactNativeのプロジェクトを作った時にハマった話。
発生経緯
デスクトップに「新任研修」というフォルダを作り、既に他端末で動作確認済みのReactNativeプロジェクトをまるっとコピー。
念のため動作確認のためrun-androidさせてみる
react-native run-android
すると下記のエラーが発生
/Users/lukaskurucz/Git/app-name/node_modules/@react-native-community/cli-platform-android/native_modules.gradle' line: 191
なんじゃこりゃ。native_modules.gradleなんて見たこともないモジュールがエラーを吐いている。
ゴミが残ってるのかもと、一度クリーンしてみる。
cd android && gradlew clean
が、そもそもcleanが同じエラーで通らない。
原因
仕方がないのでnative_modules.gradleとやらを見てみることにする。
どうやら下記の行あたりでエラーが出ているようだ。
native_modules.gradle
def json = new JsonSlurper().parseText(reactNativeConfigOutput)
this.packageName = json["project"]["android"]["packageName"]
これだけ見ていても訳が分からないので、とりあえずJSONにパースする前のreactNativeConfigOutputをログに吐かせてみる。
native_modules.gradle
// reactNativeConfigOutputをログに書き出し
this.logger.info(reactNativeConfigOutput)
def json = new JsonSlurper().parseText(reactNativeConfigOutput)
this.packageName = json["project"]["android"]["packageName"]
するとreactNativeConfigOutputが見事に文字化けしているではないか!!
しかも化けているのはプロジェクトのパス部分。
あ、そういえばさっき・・・
デスクトップに「新任研修」というフォルダを作り...
絶対それが原因だ!!
と思い、試しに「新任研修」を「work」にリネームしてみると問題なく動作するようになった。
パスに日本語を含めるという初歩的なミスでしたとさ。