mobile.rs 1007 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #[cfg(target_os = "android")]
  2. use tauri_runtime_wry::wry::application::{android_fn, platform::android::ndk_glue::*};
  3. #[cfg(target_os = "android")]
  4. fn init_logging(app_name: &str) {
  5. android_logger::init_once(
  6. android_logger::Config::default()
  7. .with_min_level(log::Level::Trace)
  8. .with_tag(app_name),
  9. );
  10. }
  11. #[cfg(not(target_os = "android"))]
  12. fn init_logging(_app_name: &str) {
  13. env_logger::init();
  14. }
  15. fn stop_unwind<F: FnOnce() -> T, T>(f: F) -> T {
  16. match std::panic::catch_unwind(std::panic::AssertUnwindSafe(f)) {
  17. Ok(t) => t,
  18. Err(err) => {
  19. eprintln!("attempt to unwind out of `rust` with err: {:?}", err);
  20. std::process::abort()
  21. }
  22. }
  23. }
  24. fn _start_app() {
  25. stop_unwind(main);
  26. }
  27. #[no_mangle]
  28. #[inline(never)]
  29. pub extern "C" fn start_app() {
  30. #[cfg(target_os = "android")]
  31. android_fn!(com.tauri, api);
  32. _start_app()
  33. }
  34. fn main() {
  35. super::AppBuilder::new()
  36. .setup(|app| {
  37. init_logging(&app.package_info().name);
  38. Ok(())
  39. })
  40. .run();
  41. }