From 363a650094abb7eebb1500debc277263e5a95806 Mon Sep 17 00:00:00 2001 From: zijiancogito Date: Thu, 20 Mar 2025 15:24:06 +0800 Subject: [PATCH] Enable ArkTS1.2 APP AOT Signed-off-by: CaoYing --- frameworks/native/runtime/sts_runtime.cpp | 2 +- .../sts_environment/src/sts_environment.cpp | 12 +++++++++++- .../interfaces/inner_api/sts_environment.h | 3 ++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/frameworks/native/runtime/sts_runtime.cpp b/frameworks/native/runtime/sts_runtime.cpp index 38179db8495..9c94c9cd7a6 100644 --- a/frameworks/native/runtime/sts_runtime.cpp +++ b/frameworks/native/runtime/sts_runtime.cpp @@ -497,7 +497,7 @@ bool STSRuntime::CreateStsEnv(const Options& options) { TAG_LOGD(AAFwkTag::STSRUNTIME, "called"); stsEnv_ = std::make_shared(std::make_unique(options.eventRunner)); - if (stsEnv_ == nullptr || !stsEnv_->StartRuntime(STSRuntime::jsRuntime_->GetNapiEnv())) { + if (stsEnv_ == nullptr || !stsEnv_->StartRuntime(STSRuntime::jsRuntime_->GetNapiEnv(), options)) { TAG_LOGE(AAFwkTag::STSRUNTIME, "Init StsEnv failed"); return false; } diff --git a/sts_environment/frameworks/sts_environment/src/sts_environment.cpp b/sts_environment/frameworks/sts_environment/src/sts_environment.cpp index 69454c8cb7f..47f6aa95a6d 100644 --- a/sts_environment/frameworks/sts_environment/src/sts_environment.cpp +++ b/sts_environment/frameworks/sts_environment/src/sts_environment.cpp @@ -37,6 +37,7 @@ const char STS_CREATE_VM[] = "ANI_CreateVM"; const char STS_ANI_GET_CREATEDVMS[] = "ANI_GetCreatedVMs"; const char STS_LIB_PATH[] = "libarkruntime.so"; const char BOOT_PATH[] = "/system/framework/bootpath.json"; +const char SANDBOX_ARK_CACHE_PATH[] = "/data/storage/ark-cache/"; using GetDefaultVMInitArgsSTSRuntimeType = ets_int (*)(EtsVMInitArgs* vmArgs); using GetCreatedVMsSTSRuntimeType = ets_int (*)(EtsVM** vmBuf, ets_size bufLen, ets_size* nVms); @@ -236,7 +237,7 @@ void STSEnvironment::InitSTSSysNS(const std::string& path) dlns_inherit(&ns, &ndk, "allow_all_shared_libs"); } -bool STSEnvironment::StartRuntime(napi_env napiEnv) +bool STSEnvironment::StartRuntime(napi_env napiEnv, const AbilityRuntime::Runtime::Options& runtimeOptions) { TAG_LOGE(AAFwkTag::STSRUNTIME, "StartRuntime call"); if (isRuntimeStarted_) { @@ -269,6 +270,15 @@ bool STSEnvironment::StartRuntime(napi_env napiEnv) ani_option forbiddenJITOption = {forbiddenJIT.data(), nullptr}; options.push_back(forbiddenJITOption); + std::string aotFileString = ""; + if (!runtimeOptions.arkNativeFilePath.empty()) { + std::string aotFilePath = SANDBOX_ARK_CACHE_PATH + runtimeOptions.arkNativeFilePath + + runtimeOptions.moduleName + ".an"; + aotFileString = optionPrefix + "--aot-file=" + aotFilePath; + options.push_back(ani_option{aotFileString.c_str(), nullptr}); + TAG_LOGI(AAFwkTag::STSRUNTIME, "aotFileString %{public}s", aotFileString.c_str()); + } + options.push_back(ani_option{"--ext:--log-level=info", nullptr}); std::string enableVerfication = optionPrefix + "--verification-enabled=true"; diff --git a/sts_environment/interfaces/inner_api/sts_environment.h b/sts_environment/interfaces/inner_api/sts_environment.h index 88002ca52c4..64d4e5baf61 100644 --- a/sts_environment/interfaces/inner_api/sts_environment.h +++ b/sts_environment/interfaces/inner_api/sts_environment.h @@ -27,6 +27,7 @@ #include "sts_interface.h" #include "ani.h" #include "napi/native_api.h" +#include "runtime/include/runtime.h" // #ifdef WINDOWS_PLATFORM // #define STS_EXPORT __declspec(dllexport) @@ -52,7 +53,7 @@ public: static void InitSTSAppNS(const std::string& path); static void InitSTSSDKNS(const std::string& path); static void InitSTSSysNS(const std::string& path); - bool StartRuntime(napi_env napiEnv); + bool StartRuntime(napi_env napiEnv, const AbilityRuntime::Runtime::Options& runtimeOptions); void StopRuntime(); void RegisterUncaughtExceptionHandler(const STSUncaughtExceptionInfo& handle); bool IsUISchedulerStarted() -- Gitee