Posted at

React Native 困った時エラーの見方備忘録(Android編)

More than 1 year has passed since last update.


はじめに

最近React Nativeアプリリリースのお手伝いをしてました。

でも、やはり色々発生して、困ったことになりがちで、少しでもググりやすくするために本質的な問題を知る方法を備忘録で記載していきます。


Android編


ビルドするとおちる……

react-native run-android

した時に出てくる

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

こいつの見方です。

cd android

./gradlew installDebug --stacktrace

これをすることによってエラーの詳細を見ることができます。

まるで

react-native run-android --stacktrace

できそうな雰囲気があるのでよくこれやって、ああもう・・・ってなります。

ネィティブ側で問題が起こってるときに起きやすいです。直近では、gradleで入れようとしてるパッケージ被ってるよとかでこれでした。。

あとは、apkのパスおかしくない?とかも出てきます。


apkにすると落ちる……

実機にインストールするとなぜか落ちるあれです。

大概の場合、サイニングに失敗しているか、ビルドプロセスでnode_modulesがおかしなことになっているとなります。

直近だと、一部のモジュールにsymlinkはっててこれが発生しました。実体じゃないとだめだったので、実態にして事なきを得ました。

これは、実機に接続して、

react-native run-android --configuration=release

古いバージョン(0.41以前)だと

react-native run-android --variant=release

こちらで見ることができます。

このコマンド実行するとapkを作成して、実機にインストールすることができます。がその時のログを見ることができます。

apkつくって実機でインストールするより効率的です。


実機で落ちる……

実機と接続したまま、

react-native run-android

して実機を動かします。apkにした場合のみ問題が発生する場合は、

react-native run-android --variant=release

こっちをやります。

その後AndroidStudioを立ち上げで、画面左下のAndroid monitorをクリック。

スクリーンショット 2017-04-30 0.13.42.png

たちが上がったAndroid monitorで自分のデバイスを選択することでログを見ることができます。

スクリーンショット 2017-04-30 0.13.49.png

これを使うとアプリが落ちた要因が、わかります。

直近だと、アプリを立ち上げていじると落ちるってことがありました。そして、その原因はメモリリークで、画面に表示されてないけど、回り続けているローディングアニメーションだったので、ローディングアニメーションは表示されるとき以外はアンマウントするという方法で回避しました。


よくわからないけど、実機でうまく動かない……

これは結構あります。

実機接続して動かして

react-native log-android

で仕込んでいたログを見ることができます。

また、実機を振ると開発者メニューがでるので、そこで、


終わりに

iOSから基本的につくるからかAndroidでは不思議と色々問題が発生します。


おまけ

cd android

./gradlew clean

ビルドしたネイティブファイルをクリーン。