diff --git a/.changes/build-android-version-check.md b/.changes/build-android-version-check.md new file mode 100644 index 000000000..d160ecb3d --- /dev/null +++ b/.changes/build-android-version-check.md @@ -0,0 +1,5 @@ +--- +"tauri-build": patch:enhance +--- + +Check for Android version code before building the package in release mode. diff --git a/core/tauri-build/src/mobile.rs b/core/tauri-build/src/mobile.rs index eec8288f2..548de42b7 100644 --- a/core/tauri-build/src/mobile.rs +++ b/core/tauri-build/src/mobile.rs @@ -8,6 +8,8 @@ use anyhow::{Context, Result}; use semver::Version; use tauri_utils::config::Config; +use crate::is_dev; + pub fn generate_gradle_files(project_dir: PathBuf, config: &Config) -> Result<()> { let gradle_settings_path = project_dir.join("tauri.settings.gradle"); let app_build_gradle_path = project_dir.join("app").join("tauri.build.gradle.kts"); @@ -57,7 +59,23 @@ dependencies {" if let Some(version_code) = config.bundle.android.version_code.as_ref() { app_tauri_properties.push(format!("tauri.android.versionCode={}", version_code)); } else if let Ok(version) = Version::parse(version) { - let version_code = version.major * 1000000 + version.minor * 1000 + version.patch; + let mut version_code = version.major * 1000000 + version.minor * 1000 + version.patch; + + if is_dev() { + version_code = version_code.clamp(1, 2100000000); + } + + if version_code == 0 { + return Err(anyhow::anyhow!( + "You must change the `version` in `tauri.conf.json`. The default value `0.0.0` is not allowed for Android package and must be at least `0.0.1`." + )); + } else if version_code > 2100000000 { + return Err(anyhow::anyhow!( + "Invalid version code {}. Version code must be between 1 and 2100000000. You must change the `version` in `tauri.conf.json`.", + version_code + )); + } + app_tauri_properties.push(format!("tauri.android.versionCode={}", version_code)); } }