diff --git a/frameworks/native/runtime/sts_runtime.cpp b/frameworks/native/runtime/sts_runtime.cpp index 38179db849568a63d2fedb41466670a8abe4e223..9c94c9cd7a69021919119267517667ee2c470cb9 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 69454c8cb7fede734639989a9d9929ef09505a17..47f6aa95a6de5110c28447ac422baa9d1bb75b0c 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 88002ca52c479a15c8d688b60ab86f9174a9f935..64d4e5baf6109dc1738a29674e7319c562093149 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()