From bd1da030807e556af3fbe254bef22ba330d1a1a6 Mon Sep 17 00:00:00 2001 From: zhang_hao_zheng Date: Fri, 8 Aug 2025 09:52:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E5=90=881.2kit=20appspawn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhang_hao_zheng Change-Id: I4ae5d4b0481cbe114b844001e014a0dcea6b5664 --- services/appmgr/include/remote_client_manager.h | 3 +++ services/appmgr/src/app_mgr_service_inner.cpp | 9 +++++++++ services/appmgr/src/app_spawn_client.cpp | 2 ++ services/appmgr/src/remote_client_manager.cpp | 11 ++++++++++- 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/services/appmgr/include/remote_client_manager.h b/services/appmgr/include/remote_client_manager.h index 06b95784c1d..0e13c7fc921 100644 --- a/services/appmgr/include/remote_client_manager.h +++ b/services/appmgr/include/remote_client_manager.h @@ -63,12 +63,15 @@ public: std::shared_ptr GetNativeSpawnClient(); + std::shared_ptr GetHybridSpawnClient(); + private: std::shared_ptr appSpawnClient_; std::shared_ptr bundleManagerHelper_; std::shared_ptr nwebSpawnClient_; std::shared_ptr cjAppSpawnClient_; std::shared_ptr nativeSpawnClient_; + std::shared_ptr hybridSpawnClient_; }; } // namespace AppExecFwk } // namespace OHOS diff --git a/services/appmgr/src/app_mgr_service_inner.cpp b/services/appmgr/src/app_mgr_service_inner.cpp index 3464ff962a9..ffcaadc4a79 100644 --- a/services/appmgr/src/app_mgr_service_inner.cpp +++ b/services/appmgr/src/app_mgr_service_inner.cpp @@ -316,6 +316,10 @@ constexpr const char* LIFE_CYCLE_STATE_START_FOREGROUND = "start foreground"; constexpr const char* LIFE_CYCLE_STATE_START_BACKGROUND = "start background"; const std::string LARGE_SCREEN = "large_screen"; +// runtime language arkts version +const std::string CODE_LANGUAGE_ARKTS_1_2 = "static"; +const std::string CODE_LANGUAGE_ARKTS_HYBRID = "hybrid"; + int32_t GetUserIdByUid(int32_t uid) { return uid / BASE_USER_RANGE; @@ -4427,6 +4431,11 @@ int32_t AppMgrServiceInner::StartProcess(const std::string &appName, const std:: } SendCreateAtomicServiceProcessEvent(appRecord, bundleType, moduleName, abilityName); errCode = remoteClientManager_->GetCJSpawnClient()->StartProcess(startMsg, pid); + } else if (appInfo != null && + (appInfo->arkTSMode == CODE_LANGUAGE_ARKTS_1_2 || appInfo->arkTSMode == CODE_LANGUAGE_ARKTS_HYBRID)) { + SendCreateAtomicServiceProcessEvent(appRecord, bundleType, moduleName, abilityName); + startMsg.gids.push_back(SHADER_CACHE_GROUPID); + errCode = remoteClientManager_->GetHybridSpawnClient()->StartProcess(startMsg, pid); } else { SendCreateAtomicServiceProcessEvent(appRecord, bundleType, moduleName, abilityName); startMsg.gids.push_back(SHADER_CACHE_GROUPID); diff --git a/services/appmgr/src/app_spawn_client.cpp b/services/appmgr/src/app_spawn_client.cpp index f1f1e51387c..09d7a6f1eaf 100644 --- a/services/appmgr/src/app_spawn_client.cpp +++ b/services/appmgr/src/app_spawn_client.cpp @@ -70,6 +70,8 @@ AppSpawnClient::AppSpawnClient(const char* serviceName) serviceName_ = NWEBSPAWN_SERVER_NAME; } else if (serviceName__ == NATIVESPAWN_SERVER_NAME) { serviceName_ = NATIVESPAWN_SERVER_NAME; + } else if (serviceName__ == HYBRIDSPAWN_SERVER_NAME) { + serviceName_ = HYBRIDSPAWN_SERVER_NAME; } else { TAG_LOGE(AAFwkTag::APPMGR, "unknown service name"); serviceName_ = NWEBSPAWN_SERVER_NAME; diff --git a/services/appmgr/src/remote_client_manager.cpp b/services/appmgr/src/remote_client_manager.cpp index 5e45e64d908..6f79acda180 100644 --- a/services/appmgr/src/remote_client_manager.cpp +++ b/services/appmgr/src/remote_client_manager.cpp @@ -25,7 +25,8 @@ namespace AppExecFwk { RemoteClientManager::RemoteClientManager() : appSpawnClient_(std::make_shared()), nwebSpawnClient_(std::make_shared(true)), cjAppSpawnClient_(std::make_shared("cjappspawn")), - nativeSpawnClient_(std::make_shared("nativespawn")) + nativeSpawnClient_(std::make_shared("nativespawn")), + hybridSpawnClient_(std::make_shared("hybridspawn")) {} RemoteClientManager::~RemoteClientManager() @@ -74,5 +75,13 @@ std::shared_ptr RemoteClientManager::GetNativeSpawnClient() { return nativeSpawnClient_; } + +std::shared_ptr RemoteClientManager::GetHybridSpawnClient() +{ + if (hybridSpawnClient_) { + return hybridSpawnClient_; + } + return nullptr; +} } // namespace AppExecFwk } // namespace OHOS -- Gitee