diff --git a/frameworks/bridge/arkts_frontend/arkts_frontend.cpp b/frameworks/bridge/arkts_frontend/arkts_frontend.cpp index 235ad8d03e970f80f5fc86e6441bc0217122480f..ab99931397fe1dd675fce75ca34d0ada3716e43c 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 a0b5bddec53df99dd1262985d6f37abc24644003..065db9902c2b6b7d565419cf65f1544529f6c8c1 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 {