将 Crashlytics 集成到 React Native - Android
Integrating Crashlytics into React Native - Android
我已经成功地为我们的React Native项目设置了iOS的Crashlytics集成,并设法注册了android版本。唯一的问题是它只报告与Java/系统相关的崩溃 - 如果抛出javascript异常,它不会在报告中注册。我想让它工作,因为iOS版本已经具有该功能。
我已经按照 Fabric 文档和这个问题中概述的设置了报告 - 请参阅下面的第二个答案,我已经在 MainActivity 中添加了onCreate
。
后续我尝试根据此问题评论创建自己的 NativeModuleCallExceptionHandler。代码如下:
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()
。然而,Crashlytics确实会收到通知,所以异常在某个地方被捕获了!!
的链接在上面的问题注释中。
https://github.com/facebook/react-native/issues/1194
简而言之:您可以使用ErrorUtils.setGlobalHandler((err, isFatal) => { ... });
来捕获 js 异常并将其与 Crashlytics.recordCustomExceptionName(...)
一起扔给 Craslytics。 react-native-fabric-crashlytics
npm 模块可以自动为您完成。
不要忘记onCreate()
MainApplication
方法中添加Fabric.with(this, new Crashlytics())
(如果使用低于 0.29 的 RN,则MainActivity
)。
- 使用Native Sockets在Android中实现WebSockets
- 在iOS和Android上使用React native时,我还能使用本机第三方lirbraries吗
- 从React Native Android原生地执行JavaScript代码
- React Native setState() & Animated on Android
- React组件与Native Mobile(iOS或Android)的通信
- React Native Android 原生 UI 组件中的自定义事件
- React Native - Android应用程序在调试上工作,在发布时崩溃
- React-Native Android 问题从 0.18.0 升级到 0.19.0
- 将数据从XWalkView传递到Native Android
- React Native Android WebView:javaScriptEnabled似乎不起作用
- React Native Android日期和时间选择器没有;不起作用
- React native - Android -警报对话框可取消false不工作
- 使用Cookie Jar在React Native Activity和Native Android Activity之间
- 在react-native (Android)中关闭键盘时不聚焦文本输入
- 如何在两个视图之间导航抽屉菜单点击在React Native Android
- React Native:Android:无法生成签名的APK
- React-native android WebView handle在加载前点击Url
- BackAndroid not unmounting - React Native (Android)
- 将 Crashlytics 集成到 React Native - Android
- 如何在react native android中获得响应头