1 package com.testrunner;
2 
3 import android.app.Application;
4 import android.content.res.Configuration;
5 
6 import androidx.annotation.NonNull;
7 import androidx.annotation.Nullable;
8 
9 import com.facebook.react.PackageList;
10 import com.facebook.react.ReactApplication;
11 import com.facebook.react.ReactNativeHost;
12 import com.facebook.react.ReactPackage;
13 import com.facebook.soloader.SoLoader;
14 
15 import expo.interfaces.devmenu.DevMenuPreferencesInterface;
16 import expo.modules.ApplicationLifecycleDispatcher;
17 import expo.modules.ReactNativeHostWrapper;
18 import expo.modules.devlauncher.DevLauncherController;
19 import expo.modules.devmenu.DevMenuDefaultPreferences;
20 import expo.modules.devmenu.DevMenuManager;
21 import expo.modules.devmenu.tests.DevMenuTestInterceptor;
22 
23 import java.util.List;
24 
25 public class MainApplication extends Application implements ReactApplication {
26   private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(
27       this,
28       new ReactNativeHost(this) {
29         @Override
30         public boolean getUseDeveloperSupport() {
31           return BuildConfig.DEBUG;
32         }
33 
34         @Override
35         protected List<ReactPackage> getPackages() {
36           return new PackageList(this).getPackages();
37         }
38 
39         @Override
40         protected String getJSMainModuleName() {
41           return ".expo/.virtual-metro-entry";
42         }
43       });
44 
45   @Override
46   public ReactNativeHost getReactNativeHost() {
47     return mReactNativeHost;
48   }
49 
50   @Override
51   public void onCreate() {
52     super.onCreate();
53     SoLoader.init(this, /* native exopackage */ false);
54 
55     DevMenuManager.INSTANCE.setTestInterceptor(new DevMenuTestInterceptor() {
56       @Nullable
57       @Override
58       public DevMenuPreferencesInterface overrideSettings() {
59         return new DevMenuDefaultPreferences() {
60           @Override
61           public boolean getShowsAtLaunch() {
62             return false;
63           }
64 
65           @Override
66           public boolean isOnboardingFinished() {
67             return true;
68           }
69         };
70       }
71     });
72 
73     DevLauncherController.initialize(this, mReactNativeHost);
74 
75 
76     ApplicationLifecycleDispatcher.onApplicationCreate(this);
77   }
78 
79   @Override
80   public void onConfigurationChanged(@NonNull Configuration newConfig) {
81     super.onConfigurationChanged(newConfig);
82     ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);
83   }
84 }
85