diff --git a/.changes/android-init-windows-unix.md b/.changes/android-init-windows-unix.md new file mode 100644 index 000000000..e188ee5bd --- /dev/null +++ b/.changes/android-init-windows-unix.md @@ -0,0 +1,6 @@ +--- +'tauri-cli': 'patch:bug' +'@tauri-apps/cli': patch:bug +--- + +Strip Windows-only extensions from the binary path so an Android project initialized on Windows can be used on UNIX systems. diff --git a/.changes/fix-android-build-nvm4w-windows.md b/.changes/fix-android-build-nvm4w-windows.md new file mode 100644 index 000000000..bbc706cde --- /dev/null +++ b/.changes/fix-android-build-nvm4w-windows.md @@ -0,0 +1,6 @@ +--- +'tauri-cli': 'patch:bug' +'@tauri-apps/cli': patch:bug +--- + +Enhance Android build script usage on Windows by attempting to run cmd, bat and exe formats. diff --git a/crates/tauri-cli/src/mobile/init.rs b/crates/tauri-cli/src/mobile/init.rs index a81822a5f..2a3cab0b4 100644 --- a/crates/tauri-cli/src/mobile/init.rs +++ b/crates/tauri-cli/src/mobile/init.rs @@ -117,7 +117,16 @@ pub fn exec( build_args.push(target.command_name()); build_args.push(target.ide_build_script_name()); - map.insert("tauri-binary", binary.to_string_lossy()); + let mut binary = binary.to_string_lossy().to_string(); + if binary.ends_with(".exe") || binary.ends_with(".cmd") || binary.ends_with(".bat") { + // remove Windows-only extension + binary.pop(); + binary.pop(); + binary.pop(); + binary.pop(); + } + + map.insert("tauri-binary", binary); map.insert("tauri-binary-args", &build_args); map.insert("tauri-binary-args-str", build_args.join(" ")); diff --git a/crates/tauri-cli/templates/mobile/android/buildSrc/src/main/kotlin/BuildTask.kt b/crates/tauri-cli/templates/mobile/android/buildSrc/src/main/kotlin/BuildTask.kt index 8bbef994a..a0b4a1205 100644 --- a/crates/tauri-cli/templates/mobile/android/buildSrc/src/main/kotlin/BuildTask.kt +++ b/crates/tauri-cli/templates/mobile/android/buildSrc/src/main/kotlin/BuildTask.kt @@ -21,7 +21,23 @@ open class BuildTask : DefaultTask() { runTauriCli(executable) } catch (e: Exception) { if (Os.isFamily(Os.FAMILY_WINDOWS)) { - runTauriCli("$executable.cmd") + // Try different Windows-specific extensions + val fallbacks = listOf( + "$executable.exe", + "$executable.cmd", + "$executable.bat", + ) + + var lastException: Exception = e + for (fallback in fallbacks) { + try { + runTauriCli(fallback) + return + } catch (fallbackException: Exception) { + lastException = fallbackException + } + } + throw lastException } else { throw e; }