From 79eb054292b04bb089a0e4df401a5986b33b691e Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Sun, 19 Feb 2023 06:08:55 -0800 Subject: [PATCH] feat(cli): handle Android package identifier change (#6314) --- .changes/error-on-identifier-change.md | 6 ++++++ tooling/cli/src/mobile/android.rs | 26 ++++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 .changes/error-on-identifier-change.md diff --git a/.changes/error-on-identifier-change.md b/.changes/error-on-identifier-change.md new file mode 100644 index 000000000..9dc26537b --- /dev/null +++ b/.changes/error-on-identifier-change.md @@ -0,0 +1,6 @@ +--- +"cli.rs": patch +"cli.js": patch +--- + +Print an error if the Android project was generated with an older bundle identifier or package name. diff --git a/tooling/cli/src/mobile/android.rs b/tooling/cli/src/mobile/android.rs index 193ad7dda..09686f6be 100644 --- a/tooling/cli/src/mobile/android.rs +++ b/tooling/cli/src/mobile/android.rs @@ -5,6 +5,7 @@ use clap::{Parser, Subcommand}; use std::{ env::set_var, + process::exit, thread::{sleep, spawn}, time::Duration, }; @@ -124,19 +125,24 @@ pub fn get_config( format!("{}.{}", app.reverse_domain(), app.name_snake()), ); set_var("WRY_ANDROID_LIBRARY", app.lib_name()); + set_var("TAURI_ANDROID_PROJECT_PATH", config.project_dir()); + + let src_main_dir = config.project_dir().join("app/src/main").join(format!( + "java/{}/{}", + app.reverse_domain().replace('.', "/"), + app.name_snake() + )); + if config.project_dir().exists() && !src_main_dir.exists() { + log::error!( + "Project directory {} does not exist. Did you update the package name in `Cargo.toml` or the bundle identifier in `tauri.conf.json > tauri > bundle > identifier`? Save your changes, delete the `gen/android` folder and run `tauri android init` to recreate the Android project.", + src_main_dir.display() + ); + exit(1); + } set_var( "WRY_ANDROID_KOTLIN_FILES_OUT_DIR", - config - .project_dir() - .join("app/src/main") - .join(format!( - "java/{}/{}", - app.reverse_domain().replace('.', "/"), - app.name_snake() - )) - .join("generated"), + src_main_dir.join("generated"), ); - set_var("TAURI_ANDROID_PROJECT_PATH", config.project_dir()); (app, config, metadata) }