Przeglądaj źródła

fix(core): Android compilation on Windows (#5658)

Lucas Fernandes Nogueira 2 lat temu
rodzic
commit
f6f9192aa5

+ 5 - 0
.changes/default-tls-features.md

@@ -0,0 +1,5 @@
+---
+"tauri": major
+---
+
+Added the `default-tls` and `reqwest-default-tls` Cargo features for enabling TLS suppport to connect over HTTPS.

+ 39 - 37
core/tauri-build/src/lib.rs

@@ -348,11 +348,12 @@ pub fn try_build(attributes: Attributes) -> Result<()> {
       .window_icon_path
       .unwrap_or_else(|| find_icon(&config, |i| i.ends_with(".ico"), "icons/icon.ico"));
 
-    if window_icon_path.exists() {
-      let mut res = WindowsResource::new();
+    if target_triple.contains("windows") {
+      if window_icon_path.exists() {
+        let mut res = WindowsResource::new();
 
-      res.set_manifest(
-        r#"
+        res.set_manifest(
+          r#"
         <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
           <dependency>
               <dependentAssembly>
@@ -368,42 +369,43 @@ pub fn try_build(attributes: Attributes) -> Result<()> {
           </dependency>
         </assembly>
         "#,
-      );
-
-      if let Some(sdk_dir) = &attributes.windows_attributes.sdk_dir {
-        if let Some(sdk_dir_str) = sdk_dir.to_str() {
-          res.set_toolkit_path(sdk_dir_str);
-        } else {
-          return Err(anyhow!(
-            "sdk_dir path is not valid; only UTF-8 characters are allowed"
-          ));
+        );
+
+        if let Some(sdk_dir) = &attributes.windows_attributes.sdk_dir {
+          if let Some(sdk_dir_str) = sdk_dir.to_str() {
+            res.set_toolkit_path(sdk_dir_str);
+          } else {
+            return Err(anyhow!(
+              "sdk_dir path is not valid; only UTF-8 characters are allowed"
+            ));
+          }
         }
-      }
-      if let Some(version) = &config.package.version {
-        if let Ok(v) = Version::parse(version) {
-          let version = v.major << 48 | v.minor << 32 | v.patch << 16;
-          res.set_version_info(VersionInfo::FILEVERSION, version);
-          res.set_version_info(VersionInfo::PRODUCTVERSION, version);
+        if let Some(version) = &config.package.version {
+          if let Ok(v) = Version::parse(version) {
+            let version = v.major << 48 | v.minor << 32 | v.patch << 16;
+            res.set_version_info(VersionInfo::FILEVERSION, version);
+            res.set_version_info(VersionInfo::PRODUCTVERSION, version);
+          }
+          res.set("FileVersion", version);
+          res.set("ProductVersion", version);
         }
-        res.set("FileVersion", version);
-        res.set("ProductVersion", version);
-      }
-      if let Some(product_name) = &config.package.product_name {
-        res.set("ProductName", product_name);
-        res.set("FileDescription", product_name);
-      }
-      res.set_icon_with_id(&window_icon_path.display().to_string(), "32512");
-      res.compile().with_context(|| {
-        format!(
-          "failed to compile `{}` into a Windows Resource file during tauri-build",
+        if let Some(product_name) = &config.package.product_name {
+          res.set("ProductName", product_name);
+          res.set("FileDescription", product_name);
+        }
+        res.set_icon_with_id(&window_icon_path.display().to_string(), "32512");
+        res.compile().with_context(|| {
+          format!(
+            "failed to compile `{}` into a Windows Resource file during tauri-build",
+            window_icon_path.display()
+          )
+        })?;
+      } else {
+        return Err(anyhow!(format!(
+          "`{}` not found; required for generating a Windows Resource file during tauri-build",
           window_icon_path.display()
-        )
-      })?;
-    } else {
-      return Err(anyhow!(format!(
-        "`{}` not found; required for generating a Windows Resource file during tauri-build",
-        window_icon_path.display()
-      )));
+        )));
+      }
     }
 
     let target_env = std::env::var("CARGO_CFG_TARGET_ENV").unwrap();

+ 4 - 2
core/tauri/Cargo.toml

@@ -67,9 +67,9 @@ dirs-next = "2.0"
 percent-encoding = "2.2"
 base64 = { version = "0.13", optional = true }
 clap = { version = "3", optional = true }
-reqwest = { version = "0.11", features = [ "json", "stream" ], optional = true }
+reqwest = { version = "0.11", default-features = false, features = [ "json", "stream" ], optional = true }
 bytes = { version = "1", features = [ "serde" ], optional = true }
-attohttpc = { version = "0.22", features = [ "compress", "json", "form" ] }
+attohttpc = { version = "0.24", default-features = false, features = [ "compress", "json", "form" ] }
 open = { version = "3.0", optional = true }
 shared_child = { version = "1.0", optional = true }
 os_pipe = { version = "1.0", optional = true }
@@ -147,6 +147,8 @@ http-multipart = [ "attohttpc/multipart-form", "reqwest/multipart" ]
 shell-open-api = [ "open", "regex", "tauri-macros/shell-scope" ]
 fs-extract-api = [ "zip" ]
 reqwest-client = [ "reqwest", "bytes" ]
+reqwest-default-tls = [ "reqwest-client", "reqwest/default-tls" ]
+default-tls = [ "attohttpc/tls-native" ]
 reqwest-native-tls-vendored = [ "reqwest-client", "reqwest/native-tls-vendored" ]
 native-tls-vendored = [ "attohttpc/tls-vendored" ]
 process-command-api = [ "shared_child", "os_pipe" ]

+ 2 - 0
core/tauri/src/lib.rs

@@ -22,6 +22,8 @@
 //! - **http-api**: Enables the [`api::http`] module.
 //! - **http-multipart**: Adds support to `multipart/form-data` requests.
 //! - **reqwest-client**: Uses `reqwest` as HTTP client on the `http` APIs. Improves performance, but increases the bundle size.
+//! - **default-tls**: Provides TLS support to connect over HTTPS (applies to the default HTTP client).
+//! - **reqwest-default-tls**: Provides TLS support to connect over HTTPS (applies to the `reqwest` HTTP client).
 //! - **native-tls-vendored**: Compile and statically link to a vendored copy of OpenSSL (applies to the default HTTP client).
 //! - **reqwest-native-tls-vendored**: Compile and statically link to a vendored copy of OpenSSL (applies to the `reqwest` HTTP client).
 //! - **process-command-api**: Enables the [`api::process::Command`] APIs.

+ 0 - 129
examples/api/src-tauri/Cargo.lock

@@ -154,7 +154,6 @@ dependencies = [
  "log",
  "mime",
  "multipart",
- "native-tls",
  "serde",
  "serde_json",
  "serde_urlencoded",
@@ -1329,19 +1328,6 @@ dependencies = [
  "want",
 ]
 
-[[package]]
-name = "hyper-tls"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
-dependencies = [
- "bytes",
- "hyper",
- "native-tls",
- "tokio",
- "tokio-native-tls",
-]
-
 [[package]]
 name = "ico"
 version = "0.1.0"
@@ -1785,24 +1771,6 @@ dependencies = [
  "tempfile",
 ]
 
-[[package]]
-name = "native-tls"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
-dependencies = [
- "lazy_static",
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework",
- "security-framework-sys",
- "tempfile",
-]
-
 [[package]]
 name = "ndk"
 version = "0.6.0"
@@ -2007,51 +1975,6 @@ dependencies = [
  "windows-sys 0.36.1",
 ]
 
-[[package]]
-name = "openssl"
-version = "0.10.42"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13"
-dependencies = [
- "bitflags",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.77"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a"
-dependencies = [
- "autocfg",
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
 [[package]]
 name = "os_info"
 version = "3.5.1"
@@ -2567,13 +2490,11 @@ dependencies = [
  "http",
  "http-body",
  "hyper",
- "hyper-tls",
  "ipnet",
  "js-sys",
  "log",
  "mime",
  "mime_guess",
- "native-tls",
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
@@ -2581,7 +2502,6 @@ dependencies = [
  "serde_json",
  "serde_urlencoded",
  "tokio",
- "tokio-native-tls",
  "tokio-util",
  "tower-service",
  "url",
@@ -2660,16 +2580,6 @@ dependencies = [
  "winapi-util",
 ]
 
-[[package]]
-name = "schannel"
-version = "0.1.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
-dependencies = [
- "lazy_static",
- "windows-sys 0.36.1",
-]
-
 [[package]]
 name = "scoped-tls"
 version = "1.0.1"
@@ -2682,29 +2592,6 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
 
-[[package]]
-name = "security-framework"
-version = "2.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c"
-dependencies = [
- "bitflags",
- "core-foundation",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
 [[package]]
 name = "selectors"
 version = "0.22.0"
@@ -3459,16 +3346,6 @@ dependencies = [
  "winapi",
 ]
 
-[[package]]
-name = "tokio-native-tls"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"
-dependencies = [
- "native-tls",
- "tokio",
-]
-
 [[package]]
 name = "tokio-util"
 version = "0.7.4"
@@ -3672,12 +3549,6 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
 
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
 [[package]]
 name = "version-compare"
 version = "0.0.11"

+ 2 - 2
tooling/cli/src/interface/rust.rs

@@ -353,8 +353,8 @@ fn shared_options(
     let all_features = app_settings
       .manifest
       .all_enabled_features(if let Some(f) = features { f } else { &[] });
-    if !all_features.contains(&"tauri/native-tls-vendored".into())
-      && !all_features.contains(&"tauri/reqwest-native-tls-vendored".into())
+    if all_features.contains(&"tauri/default-tls".into())
+      || all_features.contains(&"tauri/reqwest-default-tls".into())
     {
       if all_features.contains(&"tauri/reqwest-client".into()) {
         features