diff --git a/packages/cli/src/build/request.rs b/packages/cli/src/build/request.rs index 130b4cda4..8a35e6bb2 100644 --- a/packages/cli/src/build/request.rs +++ b/packages/cli/src/build/request.rs @@ -2939,13 +2939,18 @@ impl BuildRequest { )?; // Write the main activity manually since tao dropped support for it - write( - self.wry_android_kotlin_files_out_dir() - .join("MainActivity.kt"), - hbs.render_template( + let main_activity = match self.config.application.android_main_activity.as_deref() { + Some(activity) => std::fs::read_to_string(self.package_manifest_dir().join(activity)) + .context("Failed to locate custom MainActivity.kt")?, + _ => hbs.render_template( include_str!("../../assets/android/MainActivity.kt.hbs"), &hbs_data, )?, + }; + write( + self.wry_android_kotlin_files_out_dir() + .join("MainActivity.kt"), + main_activity, )?; // Write the res folder, containing stuff like default icons, colors, and menubars. diff --git a/packages/cli/src/config/app.rs b/packages/cli/src/config/app.rs index 6a17c31f9..f0e78f002 100644 --- a/packages/cli/src/config/app.rs +++ b/packages/cli/src/config/app.rs @@ -34,4 +34,8 @@ pub(crate) struct ApplicationConfig { /// `dx` will merge any required settings into this file required to build the app #[serde(default)] pub(crate) android_manifest: Option, + + /// Use this file for the MainActivity.kt associated with the Android app. + #[serde(default)] + pub(crate) android_main_activity: Option, } diff --git a/packages/cli/src/config/dioxus_config.rs b/packages/cli/src/config/dioxus_config.rs index b0bae42b3..ee804bbf4 100644 --- a/packages/cli/src/config/dioxus_config.rs +++ b/packages/cli/src/config/dioxus_config.rs @@ -21,6 +21,7 @@ impl Default for DioxusConfig { tailwind_output: None, ios_info_plist: None, android_manifest: None, + android_main_activity: None, macos_info_plist: None, ios_entitlements: None, macos_entitlements: None,