From 86f22983f91960f68694fb0287866af012b4e46b Mon Sep 17 00:00:00 2001 From: kbz_8 Date: Wed, 23 Jul 2025 21:44:10 +0200 Subject: [PATCH] adding android main activity path to cli config (#4294) Co-authored-by: Jonathan Kelley --- packages/cli/src/build/request.rs | 13 +++++++++---- packages/cli/src/config/app.rs | 4 ++++ packages/cli/src/config/dioxus_config.rs | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) 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,