Browse Source

fix(android): check version code in release mode (#9898)

Jason Tsai 1 year ago
parent
commit
adac2185a3
2 changed files with 24 additions and 1 deletions
  1. 5 0
      .changes/build-android-version-check.md
  2. 19 1
      core/tauri-build/src/mobile.rs

+ 5 - 0
.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.

+ 19 - 1
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));
     }
   }