@@ -3259,6 +3259,40 @@ impl BuildRequest {
32593259 use std:: fs:: { create_dir_all, write} ;
32603260 let root = self . root_dir ( ) ;
32613261
3262+ // Top-level gradle config
3263+ write (
3264+ root. join ( "build.gradle.kts" ) ,
3265+ include_bytes ! ( "../../assets/android/gen/build.gradle.kts" ) ,
3266+ ) ?;
3267+ write (
3268+ root. join ( "gradle.properties" ) ,
3269+ include_bytes ! ( "../../assets/android/gen/gradle.properties" ) ,
3270+ ) ?;
3271+ write (
3272+ root. join ( "gradlew" ) ,
3273+ include_bytes ! ( "../../assets/android/gen/gradlew" ) ,
3274+ ) ?;
3275+ write (
3276+ root. join ( "gradlew.bat" ) ,
3277+ include_bytes ! ( "../../assets/android/gen/gradlew.bat" ) ,
3278+ ) ?;
3279+ write (
3280+ root. join ( "settings.gradle" ) ,
3281+ include_bytes ! ( "../../assets/android/gen/settings.gradle" ) ,
3282+ ) ?;
3283+
3284+ // Then the wrapper and its properties
3285+ let wrapper = root. join ( "gradle" ) . join ( "wrapper" ) ;
3286+ create_dir_all ( & wrapper) ?;
3287+ write (
3288+ wrapper. join ( "gradle-wrapper.properties" ) ,
3289+ include_bytes ! ( "../../assets/android/gen/gradle/wrapper/gradle-wrapper.properties" ) ,
3290+ ) ?;
3291+ write (
3292+ wrapper. join ( "gradle-wrapper.jar" ) ,
3293+ include_bytes ! ( "../../assets/android/gen/gradle/wrapper/gradle-wrapper.jar" ) ,
3294+ ) ?;
3295+
32623296 // If the user has specified a custom android project directory in their Dioxus.toml
32633297 // then simply copy that directory as the project directory.
32643298 if let Some ( custom_project_dir) = self . config . application . android_project_dir . as_deref ( ) {
@@ -3269,15 +3303,11 @@ impl BuildRequest {
32693303 custom_project_dir. display( )
32703304 ) ) ;
32713305 }
3272- std:: fs:: remove_dir_all ( & root) . unwrap ( ) ;
3273- dircpy:: copy_dir ( custom_project_dir, & root) . unwrap ( ) ;
3306+ std:: fs:: remove_dir_all ( & root. join ( "app" ) ) . unwrap ( ) ;
3307+ dircpy:: copy_dir ( custom_project_dir, & root. join ( "app" ) ) . unwrap ( ) ;
32743308 return Ok ( ( ) ) ;
32753309 }
32763310
3277- // gradle
3278- let wrapper = root. join ( "gradle" ) . join ( "wrapper" ) ;
3279- create_dir_all ( & wrapper) ?;
3280-
32813311 // app
32823312 let app = root. join ( "app" ) ;
32833313 let app_main = app. join ( "src" ) . join ( "main" ) ;
@@ -3318,38 +3348,6 @@ impl BuildRequest {
33183348 } ;
33193349 let hbs = handlebars:: Handlebars :: new ( ) ;
33203350
3321- // Top-level gradle config
3322- write (
3323- root. join ( "build.gradle.kts" ) ,
3324- include_bytes ! ( "../../assets/android/gen/build.gradle.kts" ) ,
3325- ) ?;
3326- write (
3327- root. join ( "gradle.properties" ) ,
3328- include_bytes ! ( "../../assets/android/gen/gradle.properties" ) ,
3329- ) ?;
3330- write (
3331- root. join ( "gradlew" ) ,
3332- include_bytes ! ( "../../assets/android/gen/gradlew" ) ,
3333- ) ?;
3334- write (
3335- root. join ( "gradlew.bat" ) ,
3336- include_bytes ! ( "../../assets/android/gen/gradlew.bat" ) ,
3337- ) ?;
3338- write (
3339- root. join ( "settings.gradle" ) ,
3340- include_bytes ! ( "../../assets/android/gen/settings.gradle" ) ,
3341- ) ?;
3342-
3343- // Then the wrapper and its properties
3344- write (
3345- wrapper. join ( "gradle-wrapper.properties" ) ,
3346- include_bytes ! ( "../../assets/android/gen/gradle/wrapper/gradle-wrapper.properties" ) ,
3347- ) ?;
3348- write (
3349- wrapper. join ( "gradle-wrapper.jar" ) ,
3350- include_bytes ! ( "../../assets/android/gen/gradle/wrapper/gradle-wrapper.jar" ) ,
3351- ) ?;
3352-
33533351 // Now the app directory
33543352 write (
33553353 app. join ( "build.gradle.kts" ) ,
@@ -4449,12 +4447,27 @@ __wbg_init({{module_or_path: "/{}/{wasm_path}"}}).then((wasm) => {{
44494447 }
44504448
44514449 fn gradle_exe ( & self ) -> Result < PathBuf > {
4450+ let gradle_dir = if let Some ( gradle_wrapper_dir) =
4451+ self . config . application . gradle_wrapper_dir . as_deref ( )
4452+ {
4453+ let gradle_wrapper_dir = self . package_manifest_dir ( ) . join ( gradle_wrapper_dir) ;
4454+ if !gradle_wrapper_dir. exists ( ) {
4455+ return Err ( anyhow:: anyhow!(
4456+ "Specified gradle_wrapper_dir \" {}\" does not exist" ,
4457+ gradle_wrapper_dir. display( )
4458+ ) ) ;
4459+ }
4460+ gradle_wrapper_dir
4461+ } else {
4462+ self . root_dir ( )
4463+ } ;
4464+
44524465 // make sure we can execute the gradlew script
44534466 #[ cfg( unix) ]
44544467 {
44554468 use std:: os:: unix:: prelude:: PermissionsExt ;
44564469 std:: fs:: set_permissions (
4457- self . root_dir ( ) . join ( "gradlew" ) ,
4470+ gradle_dir . join ( "gradlew" ) ,
44584471 std:: fs:: Permissions :: from_mode ( 0o755 ) ,
44594472 )
44604473 . context ( "Failed to make gradlew executable" ) ?;
@@ -4465,7 +4478,7 @@ __wbg_init({{module_or_path: "/{}/{wasm_path}"}}).then((wasm) => {{
44654478 false => "gradlew" ,
44664479 } ;
44674480
4468- Ok ( self . root_dir ( ) . join ( gradle_exec_name) )
4481+ Ok ( gradle_dir . join ( gradle_exec_name) )
44694482 }
44704483
44714484 pub ( crate ) fn debug_apk_path ( & self ) -> PathBuf {
0 commit comments