Browse Source

fix(core): manage mobile logs, fix Android logcat filtering (#5659)

Lucas Fernandes Nogueira 2 years ago
parent
commit
6dcb7fbb81

+ 2 - 0
core/tauri-macros/src/mobile.rs

@@ -43,6 +43,7 @@ pub fn entry_point(_attributes: TokenStream, item: TokenStream) -> TokenStream {
     &mut error,
     &function,
   );
+  let app_name_str = var("CARGO_PKG_NAME").unwrap();
 
   if let Some(e) = error {
     quote!(#e).into()
@@ -61,6 +62,7 @@ pub fn entry_point(_attributes: TokenStream, item: TokenStream) -> TokenStream {
       #function
 
       fn _start_app() {
+        ::tauri::init_logging(#app_name_str);
         #[cfg(target_os = "android")]
         {
           use ::tauri::paste;

+ 5 - 0
core/tauri/Cargo.toml

@@ -106,6 +106,11 @@ win7-notifications = { version = "0.3.1", optional = true }
 
 [target.'cfg(target_os = "android")'.dependencies]
 paste = "1.0"
+android_logger = "0.9"
+log = "0.4"
+
+[target.'cfg(target_os = "ios")'.dependencies]
+env_logger = "0.9.0"
 
 [target."cfg(windows)".dependencies.windows]
 version = "0.39.0"

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

@@ -277,6 +277,22 @@ pub use self::runtime::ClipboardManager;
 #[cfg_attr(doc_cfg, doc(cfg(feature = "global-shortcut")))]
 pub use self::runtime::GlobalShortcutManager;
 
+#[cfg(target_os = "android")]
+#[doc(hidden)]
+pub fn init_logging(tag: &str) {
+  android_logger::init_once(
+    android_logger::Config::default()
+      .with_min_level(log::Level::Trace)
+      .with_tag(tag),
+  );
+}
+
+#[cfg(target_os = "ios")]
+#[doc(hidden)]
+pub fn init_logging(_tag: &str) {
+  env_logger::init();
+}
+
 /// Updater events.
 #[cfg(updater)]
 #[cfg_attr(doc_cfg, doc(cfg(feature = "updater")))]

+ 5 - 4
examples/api/src-tauri/Cargo.lock

@@ -101,8 +101,6 @@ checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
 name = "api"
 version = "0.1.0"
 dependencies = [
- "android_logger",
- "env_logger 0.9.3",
  "log",
  "serde",
  "serde_json",
@@ -145,9 +143,9 @@ dependencies = [
 
 [[package]]
 name = "attohttpc"
-version = "0.22.0"
+version = "0.24.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fcf00bc6d5abb29b5f97e3c61a90b6d3caa12f3faf897d4a3e3607c050a35a7"
+checksum = "b85f766c20e6ae766956f7a2fcc4e0931e79a7e1f48b29132b5d647021114914"
 dependencies = [
  "flate2",
  "http",
@@ -3010,6 +3008,7 @@ dependencies = [
 name = "tauri"
 version = "1.2.0"
 dependencies = [
+ "android_logger",
  "anyhow",
  "attohttpc",
  "base64",
@@ -3019,6 +3018,7 @@ dependencies = [
  "dirs-next",
  "embed_plist",
  "encoding_rs",
+ "env_logger 0.9.3",
  "flate2",
  "futures-util",
  "glib",
@@ -3029,6 +3029,7 @@ dependencies = [
  "ico",
  "ignore",
  "infer 0.9.0",
+ "log",
  "minisign-verify",
  "notify-rust",
  "objc",

+ 0 - 9
examples/api/src-tauri/Cargo.toml

@@ -38,15 +38,6 @@ features = [
 window-vibrancy = "0.2"
 window-shadows= "0.2"
 
-[target.'cfg(any(target_os = "android", target_os = "ios"))'.dependencies]
-log = "0.4"
-
-[target.'cfg(target_os = "android")'.dependencies]
-android_logger = "0.9.0"
-
-[target.'cfg(target_os = "ios")'.dependencies]
-env_logger = "0.9.0"
-
 [features]
 default = [ "custom-protocol" ]
 custom-protocol = [ "tauri/custom-protocol" ]

+ 1 - 20
examples/api/src-tauri/src/mobile.rs

@@ -1,23 +1,4 @@
-#[cfg(target_os = "android")]
-fn init_logging(app_name: &str) {
-  android_logger::init_once(
-    android_logger::Config::default()
-      .with_min_level(log::Level::Trace)
-      .with_tag(app_name),
-  );
-}
-
-#[cfg(not(target_os = "android"))]
-fn init_logging(_app_name: &str) {
-  env_logger::init();
-}
-
 #[tauri::mobile_entry_point]
 fn main() {
-  super::AppBuilder::new()
-    .setup(|app| {
-      init_logging(&app.package_info().name);
-      Ok(())
-    })
-    .run();
+  super::AppBuilder::new().run();
 }

+ 1 - 1
tooling/cli/Cargo.lock

@@ -378,7 +378,7 @@ dependencies = [
 [[package]]
 name = "cargo-mobile"
 version = "0.1.0"
-source = "git+https://github.com/tauri-apps/cargo-mobile?branch=dev#068cda074b0ff0c42f8d5297d8a2d5c29fd75c03"
+source = "git+https://github.com/tauri-apps/cargo-mobile?branch=dev#51d0e9a6c9b37e3287ebd5210d28798c534cb971"
 dependencies = [
  "cocoa",
  "colored 1.9.3",

+ 1 - 0
tooling/cli/src/mobile/android.rs

@@ -95,6 +95,7 @@ pub fn get_config(
 
   let raw = RawAndroidConfig {
     features: android_options.features.clone(),
+    logcat_filter_specs: vec!["RustStdoutStderr".into()],
     ..Default::default()
   };
   let config = AndroidConfig::from_raw(app.clone(), Some(raw)).unwrap();

+ 6 - 2
tooling/cli/src/mobile/android/dev.rs

@@ -16,7 +16,7 @@ use cargo_mobile::{
     env::Env,
   },
   config::app::App,
-  opts::{NoiseLevel, Profile},
+  opts::{FilterLevel, NoiseLevel, Profile},
 };
 
 use std::env::set_var;
@@ -189,7 +189,11 @@ fn run(
       env,
       noise_level,
       profile,
-      None,
+      Some(match noise_level {
+        NoiseLevel::Polite => FilterLevel::Info,
+        NoiseLevel::LoudAndProud => FilterLevel::Debug,
+        NoiseLevel::FranklyQuitePedantic => FilterLevel::Verbose,
+      }),
       build_app_bundle,
       false,
       ".MainActivity".into(),

+ 0 - 9
tooling/cli/templates/app/src-tauri/Cargo.crate-manifest

@@ -21,15 +21,6 @@ serde_json = "1.0"
 serde = { version = "1.0", features = ["derive"] }
 tauri = {{{  tauri_dep  }}}
 
-[target.'cfg(any(target_os = "android", target_os = "ios"))'.dependencies]
-log = "0.4"
-
-[target.'cfg(target_os = "android")'.dependencies]
-android_logger = "0.9.0"
-
-[target.'cfg(target_os = "ios")'.dependencies]
-env_logger = "0.9.0"
-
 [features]
 # by default Tauri runs in production mode
 # when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL

+ 1 - 20
tooling/cli/templates/app/src-tauri/src/mobile.rs

@@ -1,23 +1,4 @@
-#[cfg(target_os = "android")]
-fn init_logging(app_name: &str) {
-  android_logger::init_once(
-    android_logger::Config::default()
-      .with_min_level(log::Level::Trace)
-      .with_tag(app_name),
-  );
-}
-
-#[cfg(not(target_os = "android"))]
-fn init_logging(_app_name: &str) {
-  env_logger::init();
-}
-
 #[tauri::mobile_entry_point]
 fn main() {
-  super::AppBuilder::new()
-    .setup(|app| {
-      init_logging(&app.package_info().name);
-      Ok(())
-    })
-    .run()
+  super::AppBuilder::new().run()
 }