私はReact NativeプロジェクトのためにiOS用のCrashlyticsインテグレーションを設定しました。アンドロイドバージョンも登録できました。唯一の問題は、Java /システムに関連したクラッシュを報告することです.JavaScript例外がスローされた場合、レポートに登録されません。 iOS版には既に機能が備わっていますので、動作させたいと思います。リアクションネイティブにクラッシュイクスティクスを統合する - Android
私は、Fabric docsとthis questionで概説されているようにレポートを設定しました。第2の回答を参照してください。私はonCreate
をMainActivityに追加しました。
私は自分のNativeModuleCallExceptionHandlerをthis issue commentとして作成しようとしました。このコードは次のとおりです。
package com.mypackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.modules.core.JavascriptException;
import com.facebook.react.bridge.NativeModuleCallExceptionHandler;
import java.util.Map;
import com.crashlytics.android.Crashlytics;
class CrashlyticsErrorModule extends ReactContextBaseJavaModule {
public CrashlyticsErrorModule (ReactApplicationContext reactContext) {
super(reactContext);
addExceptionHandler(reactContext);
}
@Override
public String getName() {
return "CrashlyticsErrorModule";
}
private void addExceptionHandler(ReactApplicationContext reactContext) {
reactContext.setNativeModuleCallExceptionHandler(new NativeModuleCallExceptionHandler() {
@Override
public void handleException(Exception e) {
if (e instanceof JavascriptException) {
Crashlytics.log(e.getMessage());
} else {
Crashlytics.logException(e);
}
}
});
}
コードはエラーなしでコンパイルされますが、JavaScriptの例外はまだ報告されていません。
onCreate()
またはaddExceptionHandler()
メソッドの終わりに意図的に実行時例外をスローした場合でも、handleException()
は呼び出されません。しかしクラッシュ・スティックスは通知を受けるので、例外はどこかで捕まえられています!!
ソースコードへのリンクは上記の問題点にあります。要するに
小規模な発言:キャッチはリリース版( 'react-native-fabric-crashlytics'スキップの開発環境のスキップ)でのみ動作します。 – farwayer