1 package com.helloworld; 2 3 import android.app.Application; 4 import android.content.res.Configuration; 5 import androidx.annotation.NonNull; 6 7 import com.facebook.react.PackageList; 8 import com.facebook.react.ReactApplication; 9 import com.facebook.react.ReactNativeHost; 10 import com.facebook.react.ReactPackage; 11 import com.facebook.react.config.ReactFeatureFlags; 12 import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; 13 import com.facebook.react.defaults.DefaultReactNativeHost; 14 import com.facebook.soloader.SoLoader; 15 16 import expo.modules.ApplicationLifecycleDispatcher; 17 import expo.modules.ReactNativeHostWrapper; 18 19 import java.util.List; 20 21 public class MainApplication extends Application implements ReactApplication { 22 23 private final ReactNativeHost mReactNativeHost = 24 new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) { 25 @Override 26 public boolean getUseDeveloperSupport() { 27 return BuildConfig.DEBUG; 28 } 29 30 @Override 31 protected List<ReactPackage> getPackages() { 32 @SuppressWarnings("UnnecessaryLocalVariable") 33 List<ReactPackage> packages = new PackageList(this).getPackages(); 34 // Packages that cannot be autolinked yet can be added manually here, for example: 35 // packages.add(new MyReactNativePackage()); 36 return packages; 37 } 38 39 @Override 40 protected String getJSMainModuleName() { 41 return ".expo/.virtual-metro-entry"; 42 } 43 44 @Override 45 protected boolean isNewArchEnabled() { 46 return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; 47 } 48 49 @Override 50 protected Boolean isHermesEnabled() { 51 return BuildConfig.IS_HERMES_ENABLED; 52 } 53 }); 54 55 @Override getReactNativeHost()56 public ReactNativeHost getReactNativeHost() { 57 return mReactNativeHost; 58 } 59 60 @Override onCreate()61 public void onCreate() { 62 super.onCreate(); 63 SoLoader.init(this, /* native exopackage */ false); 64 if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) { 65 ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false; 66 } 67 if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { 68 // If you opted-in for the New Architecture, we load the native entry point for this app. 69 DefaultNewArchitectureEntryPoint.load(); 70 } 71 ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); 72 ApplicationLifecycleDispatcher.onApplicationCreate(this); 73 } 74 75 @Override onConfigurationChanged(@onNull Configuration newConfig)76 public void onConfigurationChanged(@NonNull Configuration newConfig) { 77 super.onConfigurationChanged(newConfig); 78 ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig); 79 } 80 } 81