4 个文件变更+12-7
Mets_environment/frameworks/ets_environment/src/ets_environment.cpp+4-4
@@ -521,13 +521,13 @@ bool ETSEnvironment::LoadModule(const std::string &modulePath, const std::string
521 return true;521 return true;
522}522}
523 523 
524-void ETSEnvironment::FinishPreload() {524+void ETSEnvironment::FinishPreload(napi_env jsEnv) {
525 ani_env *env = GetAniEnv();525 ani_env *env = GetAniEnv();
526 if (env == nullptr) {526 if (env == nullptr) {
527 TAG_LOGE(AAFwkTag::ETSRUNTIME, "Failed: ANI env nullptr");527 TAG_LOGE(AAFwkTag::ETSRUNTIME, "Failed: ANI env nullptr");
528 return;528 return;
529 }529 }
530- ark::ets::ETSAni::Prefork(env);530+ ark::ets::ETSAni::Prefork(env, reinterpret_cast<void *>(jsEnv));
531}531}
532 532 
533void ETSEnvironment::PostFork(void *napiEnv, const std::string &aotPath,533void ETSEnvironment::PostFork(void *napiEnv, const std::string &aotPath,
@@ -608,8 +608,8 @@ ETSEnvFuncs *ETSEnvironment::RegisterFuncs()
608 std::function<bool(const std::string &bundleModuleName, std::string &namespaceName)> &cb) {608 std::function<bool(const std::string &bundleModuleName, std::string &namespaceName)> &cb) {
609 ark::ets::EtsNamespaceManager::SetAppLibPaths(abcPathsToBundleModuleNameMap, cb);609 ark::ets::EtsNamespaceManager::SetAppLibPaths(abcPathsToBundleModuleNameMap, cb);
610 },610 },
611- .FinishPreload = []() {611+ .FinishPreload = [](napi_env jsEnv) {
612- ETSEnvironment::GetInstance()->FinishPreload();612+ ETSEnvironment::GetInstance()->FinishPreload(jsEnv);
613 },613 },
614 .PostFork = [](void *napiEnv, const std::string &aotPath, const std::vector<std::string> &appInnerHspPathList,614 .PostFork = [](void *napiEnv, const std::string &aotPath, const std::vector<std::string> &appInnerHspPathList,
615 const std::vector<OHOS::AbilityRuntime::CommonHspBundleInfo> &commonHspBundleInfos,615 const std::vector<OHOS::AbilityRuntime::CommonHspBundleInfo> &commonHspBundleInfos,
Mets_environment/interfaces/inner_api/ets_environment.h+1-1
@@ -59,7 +59,7 @@ public:
59 bool PreloadModule(const std::string &modulePath);59 bool PreloadModule(const std::string &modulePath);
60 bool LoadModule(const std::string &modulePath, const std::string &srcEntrance, void *&cls,60 bool LoadModule(const std::string &modulePath, const std::string &srcEntrance, void *&cls,
61 void *&obj, void *&ref);61 void *&obj, void *&ref);
62- void FinishPreload();62+ void FinishPreload(napi_env jsEnv);
63 void PostFork(void *napiEnv, const std::string &aotPath, const std::vector<std::string>& appInnerHspPathList,63 void PostFork(void *napiEnv, const std::string &aotPath, const std::vector<std::string>& appInnerHspPathList,
64 const std::vector<OHOS::AbilityRuntime::CommonHspBundleInfo> &commonHspBundleInfos,64 const std::vector<OHOS::AbilityRuntime::CommonHspBundleInfo> &commonHspBundleInfos,
65 const std::shared_ptr<OHOS::AppExecFwk::EventRunner> &eventRunner);65 const std::shared_ptr<OHOS::AppExecFwk::EventRunner> &eventRunner);
Mets_environment/interfaces/inner_api/ets_interface.h+1-1
@@ -47,7 +47,7 @@ struct ETSEnvFuncs {
47 void *&obj, void *&ref) = nullptr;47 void *&obj, void *&ref) = nullptr;
48 void (*SetAppLibPath)(const std::map<std::string, std::string> &abcPathsToBundleModuleNameMap,48 void (*SetAppLibPath)(const std::map<std::string, std::string> &abcPathsToBundleModuleNameMap,
49 std::function<bool(const std::string &bundleModuleName, std::string &namespaceName)> &cb) = nullptr;49 std::function<bool(const std::string &bundleModuleName, std::string &namespaceName)> &cb) = nullptr;
50- void (*FinishPreload)() = nullptr;50+ void (*FinishPreload)(napi_env jsEnv) = nullptr;
51 void (*PostFork)(void *napiEnv, const std::string &aotPath,51 void (*PostFork)(void *napiEnv, const std::string &aotPath,
52 const std::vector<std::string> &appInnerHspPathList,52 const std::vector<std::string> &appInnerHspPathList,
53 const std::vector<OHOS::AbilityRuntime::CommonHspBundleInfo> &commonHspBundleInfos,53 const std::vector<OHOS::AbilityRuntime::CommonHspBundleInfo> &commonHspBundleInfos,
Mframeworks/native/runtime/ets_runtime.cpp+6-1
@@ -425,12 +425,17 @@ void ETSRuntime::FinishPreload()
425 jsRuntime_->FinishPreload();425 jsRuntime_->FinishPreload();
426 }426 }
427 427 
428+ napi_env napiEnv = nullptr;
429+ if (jsRuntime_ != nullptr) {
430+ napiEnv = static_cast<AbilityRuntime::JsRuntime *>(jsRuntime_.get())->GetNapiEnv();
431+ }
432+ 
428 if (g_etsEnvFuncs == nullptr ||433 if (g_etsEnvFuncs == nullptr ||
429 g_etsEnvFuncs->FinishPreload == nullptr) {434 g_etsEnvFuncs->FinishPreload == nullptr) {
430 TAG_LOGE(AAFwkTag::ETSRUNTIME, "null g_etsEnvFuncs or FinishPreload");435 TAG_LOGE(AAFwkTag::ETSRUNTIME, "null g_etsEnvFuncs or FinishPreload");
431 return;436 return;
432 }437 }
433- g_etsEnvFuncs->FinishPreload();438+ g_etsEnvFuncs->FinishPreload(napiEnv);
434}439}
435 440 
436void ETSRuntime::RegisterUncaughtExceptionHandler(const EtsEnv::ETSUncaughtExceptionInfo &uncaughtExceptionInfo)441void ETSRuntime::RegisterUncaughtExceptionHandler(const EtsEnv::ETSUncaughtExceptionInfo &uncaughtExceptionInfo)