diff --git a/.changes/refactor-tauri-android-dependency.md b/.changes/refactor-tauri-android-dependency.md new file mode 100644 index 00000000000..728445eeb5f --- /dev/null +++ b/.changes/refactor-tauri-android-dependency.md @@ -0,0 +1,6 @@ +--- +"tauri": patch +"tauri-build": patch +--- + +Changed how the `tauri-android` dependency is injected. This requires the `gen/android` project to be recreated. diff --git a/core/tauri-build/src/lib.rs b/core/tauri-build/src/lib.rs index 40a1e0fe92f..313fac5d068 100644 --- a/core/tauri-build/src/lib.rs +++ b/core/tauri-build/src/lib.rs @@ -300,12 +300,20 @@ dependencies {" .to_string(); let plugins_json_path = project_dir.join(".tauri").join("plugins.json"); - let plugins: HashMap = if plugins_json_path.exists() { + let mut plugins: HashMap = if plugins_json_path.exists() { let s = read_to_string(&plugins_json_path)?; serde_json::from_str(&s)? } else { Default::default() }; + + plugins.insert( + "tauri-android".into(), + mobile::PluginMetadata { + path: var_os("DEP_TAURI_ANDROID_LIBRARY_PATH").map(PathBuf::from).expect("missing `DEP_TAURI_ANDROID_LIBRARY_PATH` environment variable; did you add `tauri` as a dependency to this crate?"), + }, + ); + for (plugin_name, plugin) in plugins { gradle_settings.push_str(&format!("include ':{plugin_name}'")); gradle_settings.push('\n'); diff --git a/core/tauri-build/src/mobile.rs b/core/tauri-build/src/mobile.rs index b34c0ffcaf4..b13b4747f62 100644 --- a/core/tauri-build/src/mobile.rs +++ b/core/tauri-build/src/mobile.rs @@ -5,7 +5,7 @@ use std::{ collections::HashMap, env::{var, var_os}, - fs::{copy, create_dir, create_dir_all, read_to_string, remove_dir_all, rename, write}, + fs::{copy, create_dir, create_dir_all, read_to_string, remove_dir_all, write}, path::{Path, PathBuf}, }; @@ -127,45 +127,6 @@ pub fn link_swift_library(name: &str, source: impl AsRef) { } } -#[doc(hidden)] -pub fn inject_android_project( - source: impl AsRef, - target: impl AsRef, - ignore_paths: &[&str], -) -> Result<()> { - let source = source.as_ref(); - let target = target.as_ref(); - - // keep build folder if it exists - let build_path = target.join("build"); - let out_dir = if build_path.exists() { - let out_dir = target.parent().unwrap().join(".tauri-tmp-build"); - let _ = remove_dir_all(&out_dir); - rename(&build_path, &out_dir).context("failed to rename build directory")?; - Some(out_dir) - } else { - None - }; - - copy_folder(source, target, ignore_paths).context("failed to copy Android project")?; - - if let Some(out_dir) = out_dir { - rename(out_dir, &build_path).context("failed to restore build directory")?; - } - - let rerun_path = target.join("build.gradle.kts"); - let metadata = source.join("build.gradle.kts").metadata()?; - filetime::set_file_mtime( - &rerun_path, - filetime::FileTime::from_last_modification_time(&metadata), - ) - .context("failed to update build.gradle.kts mtime")?; - - println!("cargo:rerun-if-changed={}", rerun_path.display()); - - Ok(()) -} - fn copy_folder(source: &Path, target: &Path, ignore_paths: &[&str]) -> Result<()> { let _ = remove_dir_all(target); diff --git a/core/tauri/build.rs b/core/tauri/build.rs index 36562810582..e88935f4225 100644 --- a/core/tauri/build.rs +++ b/core/tauri/build.rs @@ -151,12 +151,6 @@ fn main() { if target_os == "android" { if let Some(project_dir) = var_os("TAURI_ANDROID_PROJECT_PATH").map(PathBuf::from) { - tauri_build::mobile::inject_android_project( - "./mobile/android", - project_dir.join(".tauri").join("tauri-api"), - &[], - ) - .expect("failed to copy tauri-api Android project"); let tauri_proguard = include_str!("./mobile/proguard-tauri.pro").replace( "$PACKAGE", &var("WRY_ANDROID_PACKAGE").expect("missing `WRY_ANDROID_PACKAGE` environment variable"), diff --git a/tooling/cli/templates/mobile/android/app/build.gradle.kts b/tooling/cli/templates/mobile/android/app/build.gradle.kts index 88f0ea0326f..20b4aa513ab 100644 --- a/tooling/cli/templates/mobile/android/app/build.gradle.kts +++ b/tooling/cli/templates/mobile/android/app/build.gradle.kts @@ -85,7 +85,6 @@ dependencies { testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.4") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.0") - implementation(project(":tauri-android")) } apply(from = "tauri.build.gradle.kts") diff --git a/tooling/cli/templates/mobile/android/settings.gradle b/tooling/cli/templates/mobile/android/settings.gradle index eaaa068bec0..672366b3770 100644 --- a/tooling/cli/templates/mobile/android/settings.gradle +++ b/tooling/cli/templates/mobile/android/settings.gradle @@ -2,7 +2,4 @@ include ':app' {{~#each asset-packs}} include ':{{this}}'{{/each}} -include ':tauri-android' -project(':tauri-android').projectDir = new File('./.tauri/tauri-api') - apply from: 'tauri.settings.gradle'