MainApplication.java 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.safeareaviewexample;
  2. import android.app.Application;
  3. import android.content.Context;
  4. import com.facebook.react.ReactApplication;
  5. import com.facebook.react.ReactInstanceManager;
  6. import com.facebook.react.ReactNativeHost;
  7. import com.facebook.react.ReactPackage;
  8. import com.facebook.react.shell.MainReactPackage;
  9. import com.facebook.soloader.SoLoader;
  10. import com.th3rdwave.safeareacontext.SafeAreaContextPackage;
  11. import com.swmansion.rnscreens.RNScreensPackage;
  12. import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
  13. import com.swmansion.reanimated.ReanimatedPackage;
  14. import com.reactnativecommunity.asyncstorage.AsyncStoragePackage;
  15. import java.lang.reflect.InvocationTargetException;
  16. import java.util.Arrays;
  17. import java.util.List;
  18. public class MainApplication extends Application implements ReactApplication {
  19. private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
  20. @Override
  21. public boolean getUseDeveloperSupport() {
  22. return BuildConfig.DEBUG;
  23. }
  24. @Override
  25. protected List<ReactPackage> getPackages() {
  26. return Arrays.asList(
  27. new MainReactPackage(),
  28. new RNScreensPackage(),
  29. new RNGestureHandlerPackage(),
  30. new ReanimatedPackage(),
  31. new AsyncStoragePackage(),
  32. new SafeAreaContextPackage());
  33. }
  34. @Override
  35. protected String getJSMainModuleName() {
  36. return "example/index";
  37. }
  38. };
  39. @Override
  40. public ReactNativeHost getReactNativeHost() {
  41. return mReactNativeHost;
  42. }
  43. @Override
  44. public void onCreate() {
  45. super.onCreate();
  46. SoLoader.init(this, /* native exopackage */ false);
  47. initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
  48. }
  49. /**
  50. * Loads Flipper in React Native templates. Call this in the onCreate method with something like
  51. * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
  52. *
  53. * @param context
  54. * @param reactInstanceManager
  55. */
  56. private static void initializeFlipper(
  57. Context context, ReactInstanceManager reactInstanceManager) {
  58. if (BuildConfig.DEBUG) {
  59. try {
  60. /*
  61. We use reflection here to pick up the class that initializes Flipper,
  62. since Flipper library is not available in release mode
  63. */
  64. Class<?> aClass = Class.forName("com.safeareaviewexample.ReactNativeFlipper");
  65. aClass
  66. .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
  67. .invoke(null, context, reactInstanceManager);
  68. } catch (ClassNotFoundException e) {
  69. e.printStackTrace();
  70. } catch (NoSuchMethodException e) {
  71. e.printStackTrace();
  72. } catch (IllegalAccessException e) {
  73. e.printStackTrace();
  74. } catch (InvocationTargetException e) {
  75. e.printStackTrace();
  76. }
  77. }
  78. }
  79. }