diff --git a/Cargo.lock b/Cargo.lock index 2cf77a1f0..f3996fed6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8837,6 +8837,7 @@ dependencies = [ "glob", "heck 0.5.0", "json-patch", + "napi-build-ohos", "quote", "schemars", "semver", diff --git a/crates/tauri-build/Cargo.toml b/crates/tauri-build/Cargo.toml index 957c6c065..abfda06a6 100644 --- a/crates/tauri-build/Cargo.toml +++ b/crates/tauri-build/Cargo.toml @@ -47,6 +47,9 @@ toml = "0.9" # Our code requires at least 0.8.21 so don't simplify this to 0.8 schemars = { version = "0.8.21", features = ["preserve_order"] } +[target.'cfg(target_env = "ohos")'.dependencies] +napi-build-ohos = { version = "1.1" } + [features] default = ["config-json"] codegen = ["tauri-codegen", "quote"] diff --git a/crates/tauri-build/src/lib.rs b/crates/tauri-build/src/lib.rs index f907b1b2b..8575b400e 100644 --- a/crates/tauri-build/src/lib.rs +++ b/crates/tauri-build/src/lib.rs @@ -460,6 +460,9 @@ pub fn build() { pub fn try_build(attributes: Attributes) -> Result<()> { use anyhow::anyhow; + #[cfg(target_env = "ohos")] + napi_build_ohos::setup(); + println!("cargo:rerun-if-env-changed=TAURI_CONFIG"); let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap(); diff --git a/crates/tauri-macros/src/mobile.rs b/crates/tauri-macros/src/mobile.rs index 6d606e484..30ecaff40 100644 --- a/crates/tauri-macros/src/mobile.rs +++ b/crates/tauri-macros/src/mobile.rs @@ -83,7 +83,7 @@ pub fn entry_point(_attributes: TokenStream, item: TokenStream) -> TokenStream { } // be careful when renaming this, the `start_app` symbol is checked by the CLI - #[cfg(not(target_os = "android"))] + #[cfg(target_os = "ios")] #[no_mangle] #[inline(never)] pub extern "C" fn start_app() { diff --git a/crates/tauri/src/app.rs b/crates/tauri/src/app.rs index 990d6e470..7bb8ee150 100644 --- a/crates/tauri/src/app.rs +++ b/crates/tauri/src/app.rs @@ -2174,7 +2174,7 @@ tauri::Builder::default() app: crate::ohos::APP .lock() .unwrap() - .take() + .clone() .expect("OpenHarmony app instance not initialized"), };