0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【react native × Crashlytics】CrashlyticsのログをIOS simulatorからうまく送信できなかった時にやったこと

Posted at

前提とする環境

  • react native 0.73.6
  • expo 50
  • firebaseを使用するためのセットアップが終わっていること

使用パッケージ

  • @react-native-firebase/app 20.4.0
  • @react-native-firebase/crashlytics 20.4.0

発生した問題

開発中のアプリでFirebase Crashlyticsにログが送られているかを確かめるため、ios simulatorでデバッグをしていたがいくらログを送信しようとしてもされなかった。

また、crashlytics().crash()を実行してもアプリがクラッシュしなかった。
Crashlyticsが有効化されているならクラッシュするはず。

よくみると以下のログがXCodeで出力されていた。

+[RNFBSharedUtils getConfigBooleanValue:key:defaultValue:] [Line 165] 
RNFBCrashlyticsInit crashlytics_debug_enabled final value: 0

+[RNFBCrashlyticsInitProvider isCrashlyticsCollectionEnabled] [Line 67] 
RNFBCrashlyticsInit isCrashlyticsCollectionEnabled after checking crashlytics_debug_enabled: 0

どちらも0となっていて、crashlyticsが有効化されていないことがわかる。
これをなんとか1(有効)に変えたいので、ググってでてきたそれっぽいのを片端から色々試してみた。

解決法

アプリのルートディレクトリに以下のファイルを作成、中身を記載
firebase.json

firebase.json
{
  "react-native": {
    "crashlytics_debug_enabled": true
  }
}

この状態でnpx expo prebuild後、npx expo run:ios実行。
XCodeでビルドして、以下のコードを実行させると、Test errorの非重大ログ、クラッシュログが送信された。(アプリもしっかりとクラッシュした)

crashlytics().recordError(new Error('Test error'));
crashlytics().crash(); 

また、一部情報でXCodeを終了した状態でないとCrashlyticsにログが送信されないとあったが、今回においてはXCodeを終了せずともしっかり送信されていました。

今回試してみて意味がなかったこと

今回解決しなかっただけで、状況によっては解決につながる可能性があるため書いておきます。

  • GoogleService-Info.plist に以下の記載

    <key>FirebaseCrashlyticsCollectionEnabled</key>
    <true></true>
    
  • XCode shemaに以下のフラグ記載

    -FIRDebugEnabled
    

analyticsの場合だと、-FIRAnalyticsDebugEnabledを記載しないとダメだったがCrashlyticsの場合そうではないよう。

  • Expoのapp.config.jsに以下の記載

    {
      "expo": {
        "plugins": [
          [
            "@react-native-firebase/app",
            {
              "crashlytics_auto_collection_enabled": true  これ
            }
          ],
        ]
      }
    }
    
  • crashlytics().setCrashlyticsCollectionEnabled(true) の実行

  • Podfileへの追記

     pod 'Firebase/Crashlytics'
     pod 'Firebase/Analytics'
    

package.jsonに記載あれば多分いらない(Expoが処理してくれるため)

参考リンク

↑解決に導いてくれた神issues

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?