Application should start.
This error is given.

My MainApplication.java
package com.happyin.original;
import android.annotation.SuppressLint;
import android.app.Application;
import com.facebook.react.ReactApplication;
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.facebook.CallbackManager;
import com.facebook.FacebookSdk;
import com.facebook.reactnative.androidsdk.FBSDKPackage;
import io.invertase.firebase.RNFirebasePackage;
import io.invertase.firebase.analytics.RNFirebaseAnalyticsPackage;
import io.invertase.firebase.auth.RNFirebaseAuthPackage;
import io.invertase.firebase.database.RNFirebaseDatabasePackage;
import io.invertase.firebase.fabric.crashlytics.RNFirebaseCrashlyticsPackage;
import io.invertase.firebase.firestore.RNFirebaseFirestorePackage;
import io.invertase.firebase.instanceid.RNFirebaseInstanceIdPackage;
import io.invertase.firebase.links.RNFirebaseLinksPackage;
import io.invertase.firebase.messaging.RNFirebaseMessagingPackage;
import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage;
import io.invertase.firebase.storage.RNFirebaseStoragePackage;
import com.airbnb.android.react.maps.MapsPackage;
import com.microsoft.codepush.react.CodePush;
import com.microsoft.codepush.react.ReactInstanceHolder;
import java.util.Arrays;
import java.util.List;
public class MainApplication extends Application implements ReactApplication {
public class HappyInReactNativeHost extends ReactNativeHost implements ReactInstanceHolder {
HappyInReactNativeHost(Application application) {
super(application);
}
private CallbackManager mCallbackManager = CallbackManager.Factory.create();
protected CallbackManager getCallbackManager() {
return mCallbackManager;
}
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@SuppressLint("MissingPermission")
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
new MainReactPackage(),
new FBSDKPackage(mCallbackManager),
new RNGestureHandlerPackage(),
new RNFirebasePackage(),
// add/remove these packages as appropriate
new RNFirebaseAnalyticsPackage(),
new RNFirebaseAuthPackage(),
new RNFirebaseCrashlyticsPackage(),
new RNFirebaseDatabasePackage(),
new RNFirebaseFirestorePackage(),
new RNFirebaseLinksPackage(),
new RNFirebaseMessagingPackage(),
new RNFirebaseNotificationsPackage(),
new RNFirebaseStoragePackage(),
new MapsPackage(),
new CodePush(BuildConfig.CODEPUSH_KEY, MainApplication.this, BuildConfig.DEBUG, R.string.CodePushPublicKey)
);
}
@Override
protected String getJSMainModuleName() {
return "index";
}
@Override
protected String getJSBundleFile() {
return CodePush.getJSBundleFile();
}
}
private final ReactNativeHost mReactNativeHost = new HappyInReactNativeHost(this);
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
CodePush.setReactInstanceHolder(this.mReactNativeHost);
super.onCreate();
}
}
Hi @DavideValdo! One clarification: do you launching a React Native instance without an Activity (for example, from within a native push notification receiver)?
I have configured the app as such, see https://github.com/Microsoft/react-native-code-push/blob/master/docs/setup-android.md#for-react-native--v029-background-react-instances
But it won't compile
@DavideValdo did you try to use this docs or it doesn't suit you?
As for the example code you specified then it seems it's obsolete and required to be updated.
The docs you link don't suit me. I need to launch React Native from push notification.
I've tried to follow https://github.com/Microsoft/react-native-code-push/blob/master/docs/setup-android.md#for-react-native--v029-background-react-instances, but declaring the ReactInstanceHolder class within the main class for the sake of avoiding compiler errors.
Please try such code:
public class MainApplication extends Application implements ReactApplication {
...
private ReactInstanceHolder instanceHolder = new ReactInstanceHolder() {
@Override
public ReactInstanceManager getReactInstanceManager() {
return mReactNativeHost.getReactInstanceManager();
}
};
@Override
public void onCreate() {
...
CodePush.setReactInstanceHolder(instanceHolder);
...
}
...
}
I managed to make it compile with this code. I couldn't find any suggestions about ReactInstanceManager in the main docs.
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
private CallbackManager mCallbackManager = CallbackManager.Factory.create();
protected CallbackManager getCallbackManager() {
return mCallbackManager;
}
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@SuppressLint("MissingPermission")
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
new MainReactPackage(),
new FBSDKPackage(mCallbackManager),
...
new MapsPackage(),
new CodePush(BuildConfig.CODEPUSH_KEY, MainApplication.this, BuildConfig.DEBUG, R.string.CodePushPublicKey)
);
}
@Override
protected String getJSMainModuleName() {
return "index";
}
@Override
protected String getJSBundleFile() {
return CodePush.getJSBundleFile();
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
private ReactInstanceHolder instanceHolder = new ReactInstanceHolder() {
@Override
public ReactInstanceManager getReactInstanceManager() {
return mReactNativeHost.getReactInstanceManager();
}
};
@Override
public void onCreate() {
CodePush.setReactInstanceHolder(instanceHolder);
super.onCreate();
}
}
Great! We'll update docs a bit later. Will leave this issue opened until fix it.
I'm getting a RuntimeException as soon as I open the release build.
java.lang.RuntimeException: Unable to load script from assets 'index.android.bundle'. Make sure your bundle is packaged correctly or you're running a packager server.
at com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets(Native Method)
at com.facebook.react.bridge.CatalystInstanceImpl.loadScriptFromAssets(CatalystInstanceImpl.java:216)
at com.facebook.react.bridge.JSBundleLoader$1.loadScript(JSBundleLoader.java:32)
at com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl.java:243)
at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:1114)
at com.facebook.react.ReactInstanceManager.access$900(ReactInstanceManager.java:116)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:913)
at java.lang.Thread.run(Thread.java:760)
Please try such code:
public class MainApplication extends Application implements ReactApplication { ... private ReactInstanceHolder instanceHolder = new ReactInstanceHolder() { @Override public ReactInstanceManager getReactInstanceManager() { return mReactNativeHost.getReactInstanceManager(); } }; @Override public void onCreate() { ... CodePush.setReactInstanceHolder(instanceHolder); ... } ... }
Please try such code:
public class MainApplication extends Application implements ReactApplication { ... private ReactInstanceHolder instanceHolder = new ReactInstanceHolder() { @Override public ReactInstanceManager getReactInstanceManager() { return mReactNativeHost.getReactInstanceManager(); } }; @Override public void onCreate() { ... CodePush.setReactInstanceHolder(instanceHolder); ... } ... }
with add " import com.facebook.react.ReactInstanceManager; "
Most helpful comment
Please try such code: