From 2c58afcb27ee34bdef2e739a9d5829dde82eed60 Mon Sep 17 00:00:00 2001 From: Sayed Owais Ali Date: Tue, 12 Sep 2023 17:07:18 +0530 Subject: [PATCH] added crash, anr, background screens. added anr watchdog --- android/app/build.gradle | 2 + .../java/com/avapp/DeviceUtilsModule.java | 5 +++ .../src/main/java/com/avapp/MainActivity.java | 14 +++++-- .../main/java/com/avapp/MainApplication.java | 40 +++++++++++++++++-- .../app/src/main/res/layout/anr_screen.xml | 27 +++++++++++++ .../main/res/layout/app_background_screen.xml | 28 +++++++++++++ .../app/src/main/res/layout/crash_screen.xml | 27 +++++++++++++ 7 files changed, 137 insertions(+), 6 deletions(-) create mode 100644 android/app/src/main/res/layout/anr_screen.xml create mode 100644 android/app/src/main/res/layout/app_background_screen.xml create mode 100644 android/app/src/main/res/layout/crash_screen.xml diff --git a/android/app/build.gradle b/android/app/build.gradle index fdb05f7d..538fa791 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -264,6 +264,8 @@ android { dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) + implementation "com.github.anrwatchdog:anrwatchdog:1.4.0" + implementation 'com.navi.medici:alfred:navi_v1.0.0-20230911.101354-15' //noinspection GradleDynamicVersion diff --git a/android/app/src/main/java/com/avapp/DeviceUtilsModule.java b/android/app/src/main/java/com/avapp/DeviceUtilsModule.java index 0752423a..aae1903b 100644 --- a/android/app/src/main/java/com/avapp/DeviceUtilsModule.java +++ b/android/app/src/main/java/com/avapp/DeviceUtilsModule.java @@ -85,4 +85,9 @@ public class DeviceUtilsModule extends ReactContextBaseJavaModule implements Act public void startRecording() { // AlfredManager.INSTANCE.startRecording(RNContext, rootView, "", "", null); } + + @ReactMethod + public void setUserId(String userId) { + AlfredManager.config.setUserId(userId); + } } diff --git a/android/app/src/main/java/com/avapp/MainActivity.java b/android/app/src/main/java/com/avapp/MainActivity.java index 6769893a..f10a80be 100644 --- a/android/app/src/main/java/com/avapp/MainActivity.java +++ b/android/app/src/main/java/com/avapp/MainActivity.java @@ -6,6 +6,14 @@ import com.facebook.react.ReactRootView; import com.navi.alfred.AlfredManager; import android.os.Bundle; +import android.provider.Settings; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import kotlinx.coroutines.AwaitKt; +import timber.log.Timber; public class MainActivity extends ReactActivity { @@ -28,15 +36,15 @@ public class MainActivity extends ReactActivity { @Override protected void onResume() { super.onResume(); - AlfredManager.config.setEnableRecordingStatus(true); - AlfredManager.config.setAlfredStatus(true); AlfredManager.INSTANCE.startRecording(this, getWindow().getDecorView().getRootView(), "cosmos", "cosmos", null); } @Override protected void onStop() { super.onStop(); - AlfredManager.INSTANCE.stopRecording(this.getWindow().getDecorView().getRootView()); + View appBackgroundView = LayoutInflater.from(this).inflate(R.layout.app_background_screen, null); + AlfredManager.INSTANCE.measureInflatedView(appBackgroundView); + AlfredManager.INSTANCE.stopRecording(appBackgroundView); } diff --git a/android/app/src/main/java/com/avapp/MainApplication.java b/android/app/src/main/java/com/avapp/MainApplication.java index 9253788a..41ad9459 100644 --- a/android/app/src/main/java/com/avapp/MainApplication.java +++ b/android/app/src/main/java/com/avapp/MainApplication.java @@ -1,6 +1,6 @@ package com.avapp; - +import static com.google.firebase.analytics.FirebaseAnalytics.Param.SCREEN_NAME; import android.app.Application; import android.content.Context; @@ -13,15 +13,22 @@ import com.facebook.react.config.ReactFeatureFlags; import com.facebook.soloader.SoLoader; import com.avapp.newarchitecture.MainApplicationReactNativeHost; import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; import java.util.List; + +import com.github.anrwatchdog.ANRError; +import com.github.anrwatchdog.ANRWatchDog; import com.microsoft.codepush.react.CodePush; import com.navi.alfred.AlfredConfig; import com.navi.alfred.AlfredManager; import android.database.CursorWindow; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; + import java.lang.reflect.Field; - - +import java.util.Map; public class MainApplication extends Application implements ReactApplication { @@ -75,6 +82,33 @@ public class MainApplication extends Application implements ReactApplication { AlfredConfig alfredConfig = new AlfredConfig("Cosmos", "336", "4.0.0","qa"); AlfredManager.INSTANCE.init(alfredConfig, getApplicationContext()); + alfredConfig.setEnableRecordingStatus(true); + alfredConfig.setAlfredStatus(true); + + new ANRWatchDog() + .setIgnoreDebugger(true) + .setReportMainThreadOnly() + .setANRListener(new ANRWatchDog.ANRListener() { + public void onAppNotResponding(ANRError error) { + if (error.getCause().getStackTrace().length == 0) { + return; + } + + String className = error.getCause().getStackTrace()[0].getClassName(); + Map anrEventProperties = new HashMap<>(); + //anrEventProperties.put(SCREEN_NAME, NaviTrackEvent.getCurrentScreenName() != null ? NaviTrackEvent.getCurrentScreenName() : className); + //anrEventProperties.put(METHOD_NAME, error.getCause().getStackTrace()[0].getMethodName()); + //anrEventProperties.put(LINE_NUMBER, String.valueOf(error.getCause().getStackTrace()[0].getLineNumber())); + //anrEventProperties.put(APP_IN_FOREGROUND, String.valueOf(isAppInForeground(MainApplication.this))); + + if (AlfredManager.config.getAlfredStatus() && AlfredManager.config.getAnrEnableStatus()) { + //anrEventProperties.put(STACK_TRACE, error.getCause().getStackTrace()[0].toString()); + View anrView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.anr_screen, null); + AlfredManager.INSTANCE.measureInflatedView(anrView); + AlfredManager.INSTANCE.handleAnrEvent(anrEventProperties, anrView, SCREEN_NAME); + } + } + }).start(); // https://github.com/rt2zz/redux-persist/issues/284#issuecomment-1011214066 try { diff --git a/android/app/src/main/res/layout/anr_screen.xml b/android/app/src/main/res/layout/anr_screen.xml new file mode 100644 index 00000000..3915625a --- /dev/null +++ b/android/app/src/main/res/layout/anr_screen.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/app_background_screen.xml b/android/app/src/main/res/layout/app_background_screen.xml new file mode 100644 index 00000000..c6c6a45c --- /dev/null +++ b/android/app/src/main/res/layout/app_background_screen.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/crash_screen.xml b/android/app/src/main/res/layout/crash_screen.xml new file mode 100644 index 00000000..01e20ac6 --- /dev/null +++ b/android/app/src/main/res/layout/crash_screen.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + \ No newline at end of file