From c6a7f2063553bdf7c323e56f24f8233f30fbf32e Mon Sep 17 00:00:00 2001 From: dzin <2363448374@qq.com> Date: Sat, 23 Aug 2025 06:52:20 +0000 Subject: [PATCH] update bundle.json. Signed-off-by: dzin <2363448374@qq.com> --- appspawn.gni | 1 - bundle.json | 3 +- modules/nweb_adapter/BUILD.gn | 3 - modules/nweb_adapter/nwebspawn_adapter.cpp | 100 +-------------------- nwebspawn.cfg | 7 ++ 5 files changed, 11 insertions(+), 103 deletions(-) diff --git a/appspawn.gni b/appspawn.gni index 341012bf..802c3f70 100644 --- a/appspawn.gni +++ b/appspawn.gni @@ -41,7 +41,6 @@ declare_args() { appspawn_support_local_debugger = false appspawn_hitrace_option = true appspawn_napi_preload_path = "../appspawn_preload.json" - appspawn_arkweb_preload = true } if (!defined(global_parts_info) || diff --git a/bundle.json b/bundle.json index 36e31976..548ce336 100644 --- a/bundle.json +++ b/bundle.json @@ -32,8 +32,7 @@ "appspawn_custom_sandbox", "appspawn_support_nosharefs", "appspawn_support_local_debugger", - "appspawn_napi_preload_path", - "appspawn_arkweb_preload" + "appspawn_napi_preload_path" ], "rom": "296KB", "ram": "13125KB", diff --git a/modules/nweb_adapter/BUILD.gn b/modules/nweb_adapter/BUILD.gn index 16145b27..84804a22 100644 --- a/modules/nweb_adapter/BUILD.gn +++ b/modules/nweb_adapter/BUILD.gn @@ -31,9 +31,6 @@ ohos_shared_library("appspawn_nweb") { if (target_cpu == "x86_64") { defines += [ "webview_x86_64" ] } - if (appspawn_arkweb_preload) { - defines += [ "arkweb_preload" ] - } external_deps = [ "c_utils:utils", diff --git a/modules/nweb_adapter/nwebspawn_adapter.cpp b/modules/nweb_adapter/nwebspawn_adapter.cpp index f2238082..5f744b24 100644 --- a/modules/nweb_adapter/nwebspawn_adapter.cpp +++ b/modules/nweb_adapter/nwebspawn_adapter.cpp @@ -36,17 +36,11 @@ #endif #include "arkweb_utils.h" +#include "arkweb_preload_common.h" namespace { const std::string ARK_WEB_ENGINE_LIB_NAME = "libarkweb_engine.so"; const std::string ARK_WEB_RENDER_LIB_NAME = "libarkweb_render.so"; - -typedef enum { - PRELOAD_NO = 0, // 不预加载 - PRELOAD_PARTIAL = 1, // 只预加载libohos_adapter_glue_source.z.so - PRELOAD_FULL = 2 // 预加载libohos_adapter_glue_source.z.so和libarkweb_engine.so -} RenderPreLoadMode; - } // namespace static bool SetSeccompPolicyForRenderer(void *nwebRenderHandle) @@ -160,81 +154,6 @@ APPSPAWN_STATIC int RunChildProcessor(AppSpawnContent *content, AppSpawnClient * return 0; } -static std::string GetOhosAdptGlueSrcLibPath() -{ -#ifdef webview_arm64 - const std::string ARK_WEB_CORE_HAP_LIB_PATH = - "/system/lib64/libohos_adapter_glue_source.z.so"; -#elif webview_x86_64 - const std::string ARK_WEB_CORE_HAP_LIB_PATH = ""; -#else - const std::string ARK_WEB_CORE_HAP_LIB_PATH = - "/system/lib/libohos_adapter_glue_source.z.so"; -#endif - return ARK_WEB_CORE_HAP_LIB_PATH; -} - -static std::string GetArkWebEngineLibPath() -{ - char bundleName[PATH_MAX] = {0}; - GetParameter("persist.arkwebcore.package_name", "", bundleName, PATH_MAX); - if (strlen(bundleName) == 0) { - APPSPAWN_LOGE("Fail to get persist.arkwebcore.package_name, empty"); - return ""; - } -#ifdef webview_arm64 - const std::string ARK_WEB_CORE_HAP_LIB_PATH = - "/data/app/el1/bundle/public/" + std::string(bundleName) + "/libs/arm64"; -#elif webview_x86_64 - const std::string ARK_WEB_CORE_HAP_LIB_PATH = ""; -#else - const std::string ARK_WEB_CORE_HAP_LIB_PATH = - "/data/app/el1/bundle/public/" + std::string(bundleName) + "/libs/arm"; -#endif - return ARK_WEB_CORE_HAP_LIB_PATH; -} - -static void PreLoadArkWebEngineLib() -{ - Dl_namespace dlns; - Dl_namespace ndkns; - dlns_init(&dlns, "nweb_ns"); - const std::string arkWebEngineLibPath = GetArkWebEngineLibPath(); - if (arkWebEngineLibPath.empty()) { - return; - } - dlns_create(&dlns, arkWebEngineLibPath.c_str()); - dlns_get("ndk", &ndkns); - dlns_inherit(&dlns, &ndkns, "allow_all_shared_libs"); - void *webEngineHandle = dlopen_ns(&dlns, ARK_WEB_ENGINE_LIB_NAME.c_str(), RTLD_NOW | RTLD_GLOBAL); - if (!webEngineHandle) { - APPSPAWN_LOGE("Fail to dlopen libarkweb_engine.so, errno: %{public}d", errno); - } -} - -static void PreLoadOHOSAdptGlueSrcLib() -{ - const std::string ohosAdptGlueSrcLibPath = GetOhosAdptGlueSrcLibPath(); - if (ohosAdptGlueSrcLibPath.empty()) { - return; - } - void *ohosAdptGlueSrcHandle = dlopen(ohosAdptGlueSrcLibPath.c_str(), RTLD_NOW | RTLD_GLOBAL); - if (!ohosAdptGlueSrcHandle) { - APPSPAWN_LOGE("Fail to dlopen libohos_adapter_glue_source.z.so, errno: %{public}d", errno); - } -} - -#ifndef arkweb_preload -static int GetSysParamPreLoadMode() -{ - const int BUFFER_LEN = 8; - char preLoadMode[BUFFER_LEN] = {0}; - GetParameter("const.startup.nwebspawn.preloadMode", "0", preLoadMode, BUFFER_LEN); - int ret = std::atoi(preLoadMode); - return ret; -} -#endif - APPSPAWN_STATIC int PreLoadNwebSpawn(AppSpawnMgr *content) { APPSPAWN_LOGI("PreLoadNwebSpawn %{public}d", IsNWebSpawnMode(content)); @@ -244,21 +163,8 @@ APPSPAWN_STATIC int PreLoadNwebSpawn(AppSpawnMgr *content) // register RegChildLooper(&content->content, RunChildProcessor); - // preload render lib -#ifdef arkweb_preload - int preloadMode = RenderPreLoadMode::PRELOAD_FULL; -#else - int preloadMode = GetSysParamPreLoadMode(); -#endif - APPSPAWN_LOGI("NwebSpawn preload render lib mode: %{public}d", preloadMode); - if (preloadMode == PRELOAD_PARTIAL) { - PreLoadOHOSAdptGlueSrcLib(); - } - if (preloadMode == PRELOAD_FULL) { - PreLoadArkWebEngineLib(); - PreLoadOHOSAdptGlueSrcLib(); - } - + OHOS::ArkWeb::PreloadArkWebLibForRender(); + return 0; } diff --git a/nwebspawn.cfg b/nwebspawn.cfg index fffd8651..927dc444 100644 --- a/nwebspawn.cfg +++ b/nwebspawn.cfg @@ -6,6 +6,13 @@ "start nwebspawn" ] }], + "jobs" : [{ + "name" : "param:nwebspawn_service_restart", + "condition" : "bootevent.boot.completed=true && web.engine.install.completed=true", + "cmds" : [ + "reset nwebspawn" + ] + }], "services" : [{ "name" : "nwebspawn", "path" : ["/system/bin/nwebspawn", -- Gitee