diff --git a/RNTester/android/app/build.gradle b/RNTester/android/app/build.gradle index 6e40ad021b6..aaf991abc27 100644 --- a/RNTester/android/app/build.gradle +++ b/RNTester/android/app/build.gradle @@ -169,6 +169,12 @@ dependencies { debugImplementation files(hermesPath + "hermes-debug.aar") releaseImplementation files(hermesPath + "hermes-release.aar") + debugImplementation("com.facebook.flipper:flipper:0.23.4") { + exclude group:'com.facebook.yoga' + exclude group:'com.facebook.flipper', module: 'fbjni' + exclude group:'com.facebook.litho', module: 'litho-annotations' + } + if (useIntlJsc) { implementation 'org.webkit:android-jsc-intl:+' } else { diff --git a/RNTester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java b/RNTester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java index f6f33b6e2fe..e91eac877f2 100644 --- a/RNTester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java +++ b/RNTester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java @@ -7,6 +7,7 @@ package com.facebook.react.uiapp; import android.app.Application; +import android.content.Context; import com.facebook.react.BuildConfig; import com.facebook.react.ReactApplication; import com.facebook.react.ReactNativeHost; @@ -14,6 +15,7 @@ import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; import com.facebook.react.views.text.ReactFontManager; import com.facebook.soloader.SoLoader; +import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.List; @@ -46,10 +48,32 @@ public class RNTesterApplication extends Application implements ReactApplication ReactFontManager.getInstance().addCustomFont(this, "Rubik", R.font.rubik); super.onCreate(); SoLoader.init(this, /* native exopackage */ false); + initializeFlipper(this); } @Override public ReactNativeHost getReactNativeHost() { return mReactNativeHost; } + + private static void initializeFlipper(Context context) { + if (BuildConfig.DEBUG) { + try { + /* + We use reflection here to pick up the class that initializes Flipper, + since Flipper library is not available in release mode + */ + Class aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper"); + aClass.getMethod("initializeFlipper", Context.class).invoke(null, context); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } };