From 3e5f8ec46cc3d408e5584bb814fc29594fa13155 Mon Sep 17 00:00:00 2001 From: xiangyuan Date: Thu, 17 Jul 2025 20:49:06 +0800 Subject: [PATCH] =?UTF-8?q?fix=5F=E4=BA=92=E6=93=8D=E4=BD=9C=5F=E5=8A=A0?= =?UTF-8?q?=E8=BD=BDlibrary=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiangyuan --- .../bridge/arkts_frontend/arkts_frontend.cpp | 21 +++++++++++++++++++ .../arkui-ohos/src/ArkUIEntry.ts | 7 +++++++ 2 files changed, 28 insertions(+) diff --git a/frameworks/bridge/arkts_frontend/arkts_frontend.cpp b/frameworks/bridge/arkts_frontend/arkts_frontend.cpp index 235ad8d03e9..ab99931397f 100644 --- a/frameworks/bridge/arkts_frontend/arkts_frontend.cpp +++ b/frameworks/bridge/arkts_frontend/arkts_frontend.cpp @@ -48,6 +48,8 @@ struct AppInfo { const char* checkCallbackEventMethodSig; const char* handleMessageMethodName; const char* handleMessageMethodSig; + const char* registerNativeModule; + const char* registerNativeModuleSig; }; /* copied from arkcompiler_ets_frontend vmloader.cc*/ const AppInfo KOALA_APP_INFO = { @@ -65,6 +67,8 @@ const AppInfo KOALA_APP_INFO = { ":V", "handleMessage", "JILstd/core/String;:Z", + "registerNativeModulePreloader", + ":V", }; // void TryEmitError(EtsEnv& env) @@ -476,6 +480,23 @@ void* ArktsFrontend::preloadArkTSRuntime = nullptr; void ArktsFrontend::PreloadAceModule(void* aniEnv) { ArktsFrontend::preloadArkTSRuntime = aniEnv; + + auto* env = reinterpret_cast(aniEnv); + ani_class appClass; + if (env->FindClass(KOALA_APP_INFO.className, &appClass) != ANI_OK) { + LOGE("PreloadAceModule: Cannot load main class %{public}s", KOALA_APP_INFO.className); + return; + } + + ani_static_method register; + if (env->Class_FindStaticMethod( + appClass, KOALA_APP_INFO.registerNativeModule, KOALA_APP_INFO.registerNativeModuleSig, ®ister) != ANI_OK) { + LOGE("PreloadAceModule: Cannot find register method %{public}s", KOALA_APP_INFO.registerNativeModule); + return; + } + + ani_ref appLocal; + env->Class_CallStaticMethod_Void(appClass, register, &appLocal); } extern "C" ACE_FORCE_EXPORT void OHOS_ACE_PreloadAceArkTSModule(void* aniEnv) diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/ArkUIEntry.ts b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/ArkUIEntry.ts index a0b5bddec53..065db9902c2 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/ArkUIEntry.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/ArkUIEntry.ts @@ -463,6 +463,13 @@ export class Application { registerSyncCallbackProcessor() return new Application(useNativeLog, moduleName, startUrl, startParams, userView, entryPoint) } + + static registerNativeModulePreloader(): void { + registerNativeModuleLibraryName("InteropNativeModule", "ArkoalaNative_ark.z") + registerNativeModuleLibraryName("ArkUINativeModule", "ArkoalaNative_ark.z") + registerNativeModuleLibraryName("ArkUIGeneratedNativeModule", "ArkoalaNative_ark.z") + registerNativeModuleLibraryName("TestNativeModule", "ArkoalaNative_ark.z") + } } function makeClickEvent(x: number, y: number): ClickEvent { -- Gitee