Cordova - modify or remove MainActivity

There are two possible solutions to this:

1. Use a hook to modify MainActivity

Use a hook to copy a custom MainActivity.java into platforms/android/src/[packageName]/ and override the default Cordova MainActivity.

For example, a before_build hook can be added to <platform name="android"> section of the config.xml like this:

<hook type="before_build" src="scripts/updateMainActivity.sh" />

Where scripts/updateMainActivity.sh is:

#!/bin/bash
cp MainActivity.java platforms/android/src/[packageName]/

(You can also write hooks with nodeJS, which is good for cross-platform compatibility)

2. Use cordova-custom-config to remove MainActivity

With cordova-custom-config, all you need to do is add the following to the <platform name="android"> section of your config.xml:

<preference name="android-manifest/application/activity[@android:name='MainActivity']" delete="true" />

Note: You will need cordova-custom-config >= 3.0.0.

This is the solution I went with, since I am already using cordova-custom-config.


If you want to modify an activity's entry in the Manifest.xml, you can do so from the plugin's plugin.xml file.

<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="overwrite">
<activity android:name="MainActivity" android:label="NewLabel" android:configChanges="orientation|keyboardHidden" />
</edit-config>

With this,you can remove the MainActivity's entry or change it so that it's not longer the launcher activity for the app.

Source