diff --git a/adapter/ohos/entrance/ace_data_ability.cpp b/adapter/ohos/entrance/ace_data_ability.cpp index 6d9dfcebb809ec3f9674cbbd77b47eea23b0801e..a09cbcc1fef2bdc852052c299bdfb26a92546171 100644 --- a/adapter/ohos/entrance/ace_data_ability.cpp +++ b/adapter/ohos/entrance/ace_data_ability.cpp @@ -85,7 +85,7 @@ void AceDataAbility::OnStart(const OHOS::AAFwk::Want& want) BackendType backendType = BackendType::DATA; bool isArkApp = GetIsArkFromConfig(packagePath, isHap); - Platform::PaContainer::CreateContainer(abilityId_, backendType, isArkApp, this, + Platform::PaContainer::CreateContainer(abilityId_, backendType, isArkApp, this, moduleInfo->hapPath, std::make_unique([this]() { TerminateAbility(); })); AceEngine::InitJsDumpHeadSignal(); diff --git a/adapter/ohos/entrance/ace_form_ability.cpp b/adapter/ohos/entrance/ace_form_ability.cpp index d1a192ddfa487951f23f2338fac6aaba16797dc1..4e7f980019368ede3ee544b9d8162347c008fef6 100644 --- a/adapter/ohos/entrance/ace_form_ability.cpp +++ b/adapter/ohos/entrance/ace_form_ability.cpp @@ -85,7 +85,7 @@ void AceFormAbility::LoadFormEnv(const OHOS::AAFwk::Want& want) BackendType backendType = BackendType::FORM; bool isArkApp = GetIsArkFromConfig(packagePath, isHap); - Platform::PaContainer::CreateContainer(instanceId_, backendType, isArkApp, this, + Platform::PaContainer::CreateContainer(instanceId_, backendType, isArkApp, this, moduleInfo->hapPath, std::make_unique([this]() { TerminateAbility(); })); std::shared_ptr info = GetAbilityInfo(); diff --git a/adapter/ohos/entrance/ace_service_ability.cpp b/adapter/ohos/entrance/ace_service_ability.cpp index 1a8d191254b66294b6047ea9c91aa30d4cd2e9f4..910ee48b37764cac20ec0531b847543b053fc29e 100644 --- a/adapter/ohos/entrance/ace_service_ability.cpp +++ b/adapter/ohos/entrance/ace_service_ability.cpp @@ -85,7 +85,7 @@ void AceServiceAbility::OnStart(const OHOS::AAFwk::Want& want) BackendType backendType = BackendType::SERVICE; bool isArkApp = GetIsArkFromConfig(packagePath, isHap); - Platform::PaContainer::CreateContainer(abilityId_, backendType, isArkApp, this, + Platform::PaContainer::CreateContainer(abilityId_, backendType, isArkApp, this, moduleInfo->hapPath, std::make_unique([this]() { TerminateAbility(); })); AceEngine::InitJsDumpHeadSignal(); diff --git a/adapter/ohos/entrance/pa_container.cpp b/adapter/ohos/entrance/pa_container.cpp index 224763ca34779f85459c312bc24e0d5303b24142..e254dd9b793aab41d02949ce431a9cc6bb25d298 100644 --- a/adapter/ohos/entrance/pa_container.cpp +++ b/adapter/ohos/entrance/pa_container.cpp @@ -53,7 +53,7 @@ const char* GetPaEngineSharedLibrary(bool isArkApp) } // namespace PaContainer::PaContainer(int32_t instanceId, BackendType type, bool isArkApp, void* paAbility, - std::unique_ptr callback) + const std::string& hapPath, std::unique_ptr callback) : instanceId_(instanceId), type_(type), isArkApp_(isArkApp), paAbility_(paAbility) { ACE_DCHECK(callback); @@ -61,6 +61,7 @@ PaContainer::PaContainer(int32_t instanceId, BackendType type, bool isArkApp, vo flutterTaskExecutor->InitPlatformThread(); flutterTaskExecutor->InitJsThread(); taskExecutor_ = flutterTaskExecutor; + hapPath_ = hapPath; InitializeBackend(); @@ -80,6 +81,7 @@ void PaContainer::InitializeBackend() jsEngine->AddExtraNativeObject("ability", paAbility_); jsEngine->SetNeedDebugBreakPoint(AceApplicationInfo::GetInstance().IsNeedDebugBreakPoint()); jsEngine->SetDebugVersion(AceApplicationInfo::GetInstance().IsDebugVersion()); + jsEngine->SetHapPath(hapPath_); paBackend->SetJsEngine(jsEngine); ACE_DCHECK(backend_); @@ -93,9 +95,10 @@ RefPtr PaContainer::GetContainer(int32_t instanceId) } void PaContainer::CreateContainer(int32_t instanceId, BackendType type, bool isArkApp, void* paAbility, - std::unique_ptr callback) + const std::string& hapPath, std::unique_ptr callback) { - auto aceContainer = AceType::MakeRefPtr(instanceId, type, isArkApp, paAbility, std::move(callback)); + auto aceContainer = AceType::MakeRefPtr(instanceId, type, isArkApp, paAbility, + hapPath, std::move(callback)); AceEngine::Get().AddContainer(instanceId, aceContainer); auto back = aceContainer->GetBackend(); diff --git a/adapter/ohos/entrance/pa_container.h b/adapter/ohos/entrance/pa_container.h index 12fb976155c6f86e8b687482bfd5348a01697e6e..902c45501fe06778fab34c45894d056f0923c868 100644 --- a/adapter/ohos/entrance/pa_container.h +++ b/adapter/ohos/entrance/pa_container.h @@ -42,7 +42,7 @@ class PaContainer : public Container, public JsMessageDispatcher { public: PaContainer(int32_t instanceId, BackendType type, bool isArkApp, void* paAbility, - std::unique_ptr callback); + const std::string& hapPath, std::unique_ptr callback); ~PaContainer() override = default; void Initialize() override {} @@ -143,7 +143,7 @@ public: static bool Register(); static void CreateContainer(int32_t instanceId, BackendType type, bool isArkApp, void* paAbility, - std::unique_ptr callback); + const std::string& hapPath, std::unique_ptr callback); static void DestroyContainer(int32_t instanceId); static RefPtr GetContainer(int32_t instanceId); static bool RunPa(int32_t instanceId, const std::string& content, const OHOS::AAFwk::Want& want); @@ -193,6 +193,7 @@ private: bool isArkApp_ = false; std::unique_ptr platformEventCallback_; void* paAbility_ = nullptr; + std::string hapPath_; ACE_DISALLOW_COPY_AND_MOVE(PaContainer); }; diff --git a/adapter/ohos/entrance/pa_engine/engine/common/js_backend_engine.h b/adapter/ohos/entrance/pa_engine/engine/common/js_backend_engine.h index 739afc7be0f87e947bb8536705f9619244f433a4..3fb43f9e90c8c06fc12beeedcc85ae9225b5173f 100644 --- a/adapter/ohos/entrance/pa_engine/engine/common/js_backend_engine.h +++ b/adapter/ohos/entrance/pa_engine/engine/common/js_backend_engine.h @@ -136,6 +136,15 @@ public: needDebugBreakPoint_ = value; } + void SetHapPath(std::string hapPath) + { + hapPath_ = hapPath; + } + + std::string GetHapPath() + { + return hapPath_; + } private: std::string instanceName_; AppExecFwk::FormProviderData formProviderData_; @@ -144,6 +153,7 @@ private: bool isDebugVersion_ = false; // if debug, '-D' means need debug breakpoint, by default, do not enter breakpoint. bool needDebugBreakPoint_ = false; + std::string hapPath_; }; } // namespace OHOS::Ace