已合并
add napi env #17620
zhongshield1创建于 2025年12月1日
add napi env #17620
已合并
共 4 个文件变更+12-7
| @@ -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 | ||
| 533 | void ETSEnvironment::PostFork(void *napiEnv, const std::string &aotPath, | 533 | void 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, |
| @@ -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); |
| @@ -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, |
| @@ -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 | ||
| 436 | void ETSRuntime::RegisterUncaughtExceptionHandler(const EtsEnv::ETSUncaughtExceptionInfo &uncaughtExceptionInfo) | 441 | void ETSRuntime::RegisterUncaughtExceptionHandler(const EtsEnv::ETSUncaughtExceptionInfo &uncaughtExceptionInfo) |