diff --git a/interfaces/kits/ani/common/BUILD.gn b/interfaces/kits/ani/common/BUILD.gn index 789e9fc86fb959f6c0a741e4c66fd196f9b3547f..febafb002b3ff54ebd6d8306161e7d1dc82b788a 100644 --- a/interfaces/kits/ani/common/BUILD.gn +++ b/interfaces/kits/ani/common/BUILD.gn @@ -68,6 +68,7 @@ ohos_shared_library("bms_ani_common") { "hilog:libhilog", "ipc:ipc_core", "runtime_core:ani", + "runtime_core:ani_helpers", "safwk:system_ability_fwk", "samgr:samgr_proxy", ] diff --git a/interfaces/kits/ani/common/common_fun_ani.cpp b/interfaces/kits/ani/common/common_fun_ani.cpp index d8c9ba56f0fb526bda31274f23df59aa8e3db704..e87e96adb2ebebd7e12d45d9b66ce744d00e7658 100644 --- a/interfaces/kits/ani/common/common_fun_ani.cpp +++ b/interfaces/kits/ani/common/common_fun_ani.cpp @@ -13,44 +13,47 @@ * limitations under the License. */ +#include #include #include +#include "ani_signature_builder.h" #include "app_log_wrapper.h" #include "common_fun_ani.h" namespace OHOS { namespace AppExecFwk { +using namespace arkts::ani_signature; using Want = OHOS::AAFwk::Want; namespace { -constexpr const char* CLASSNAME_ABILITYINFO = "LbundleManager/AbilityInfoInner/AbilityInfoInner;"; -constexpr const char* CLASSNAME_EXTENSIONABILITYINFO = +constexpr const char* CLASSNAME_ABILITYINFO_INNER = "LbundleManager/AbilityInfoInner/AbilityInfoInner;"; +constexpr const char* CLASSNAME_EXTENSIONABILITYINFO_INNER = "LbundleManager/ExtensionAbilityInfoInner/ExtensionAbilityInfoInner;"; -constexpr const char* CLASSNAME_WINDOWSIZE = "LbundleManager/AbilityInfoInner/WindowSizeInner;"; -constexpr const char* CLASSNAME_APPLICATIONINFO = "LbundleManager/ApplicationInfoInner/ApplicationInfoInner;"; -constexpr const char* CLASSNAME_MODULEMETADATA = "LbundleManager/ApplicationInfoInner/ModuleMetadataInner;"; -constexpr const char* CLASSNAME_MULTIAPPMODE = "LbundleManager/ApplicationInfoInner/MultiAppModeInner;"; -constexpr const char* CLASSNAME_BUNDLEINFO = "LbundleManager/BundleInfoInner/BundleInfoInner;"; -constexpr const char* CLASSNAME_PERMISSION = "LbundleManager/BundleInfoInner/ReqPermissionDetailInner;"; -constexpr const char* CLASSNAME_USEDSCENE = "LbundleManager/BundleInfoInner/UsedSceneInner;"; -constexpr const char* CLASSNAME_SIGNATUREINFO = "LbundleManager/BundleInfoInner/SignatureInfoInner;"; -constexpr const char* CLASSNAME_APPCLONEIDENTITY = "LbundleManager/BundleInfoInner/AppCloneIdentityInner;"; -constexpr const char* CLASSNAME_METADATA = "LbundleManager/MetadataInner/MetadataInner;"; -constexpr const char* CLASSNAME_RESOURCE = "Lglobal/resourceInner/ResourceInner;"; -constexpr const char* CLASSNAME_ROUTERITEM = "LbundleManager/HapModuleInfoInner/RouterItemInner;"; -constexpr const char* CLASSNAME_PRELOADITEM = "LbundleManager/HapModuleInfoInner/PreloadItemInner;"; -constexpr const char* CLASSNAME_DEPENDENCY = "LbundleManager/HapModuleInfoInner/DependencyInner;"; -constexpr const char* CLASSNAME_HAPMODULEINFO = "LbundleManager/HapModuleInfoInner/HapModuleInfoInner;"; -constexpr const char* CLASSNAME_DATAITEM = "LbundleManager/HapModuleInfoInner/DataItemInner;"; -constexpr const char* CLASSNAME_ELEMENTNAME = "LbundleManager/ElementNameInner/ElementNameInner;"; -constexpr const char* CLASSNAME_SKILL = "LbundleManager/SkillInner/SkillInner;"; -constexpr const char* CLASSNAME_SKILLURI = "LbundleManager/SkillInner/SkillUriInner;"; -constexpr const char* CLASSNAME_BUNDLERESINFO = "LbundleManager/BundleResourceInfoInner/BundleResourceInfoInner;"; +constexpr const char* CLASSNAME_WINDOWSIZE_INNER = "LbundleManager/AbilityInfoInner/WindowSizeInner;"; +constexpr const char* CLASSNAME_APPLICATIONINFO_INNER = "LbundleManager/ApplicationInfoInner/ApplicationInfoInner;"; +constexpr const char* CLASSNAME_MODULEMETADATA_INNER = "LbundleManager/ApplicationInfoInner/ModuleMetadataInner;"; +constexpr const char* CLASSNAME_MULTIAPPMODE_INNER = "LbundleManager/ApplicationInfoInner/MultiAppModeInner;"; +constexpr const char* CLASSNAME_BUNDLEINFO_INNER = "LbundleManager/BundleInfoInner/BundleInfoInner;"; +constexpr const char* CLASSNAME_PERMISSION_INNER = "LbundleManager/BundleInfoInner/ReqPermissionDetailInner;"; +constexpr const char* CLASSNAME_USEDSCENE_INNER = "LbundleManager/BundleInfoInner/UsedSceneInner;"; +constexpr const char* CLASSNAME_SIGNATUREINFO_INNER = "LbundleManager/BundleInfoInner/SignatureInfoInner;"; +constexpr const char* CLASSNAME_APPCLONEIDENTITY_INNER = "LbundleManager/BundleInfoInner/AppCloneIdentityInner;"; +constexpr const char* CLASSNAME_METADATA_INNER = "LbundleManager/MetadataInner/MetadataInner;"; +constexpr const char* CLASSNAME_RESOURCE_INNER = "Lglobal/resourceInner/ResourceInner;"; +constexpr const char* CLASSNAME_ROUTERITEM_INNER = "LbundleManager/HapModuleInfoInner/RouterItemInner;"; +constexpr const char* CLASSNAME_PRELOADITEM_INNER = "LbundleManager/HapModuleInfoInner/PreloadItemInner;"; +constexpr const char* CLASSNAME_DEPENDENCY_INNER = "LbundleManager/HapModuleInfoInner/DependencyInner;"; +constexpr const char* CLASSNAME_HAPMODULEINFO_INNER = "LbundleManager/HapModuleInfoInner/HapModuleInfoInner;"; +constexpr const char* CLASSNAME_DATAITEM_INNER = "LbundleManager/HapModuleInfoInner/DataItemInner;"; +constexpr const char* CLASSNAME_ELEMENTNAME_INNER = "LbundleManager/ElementNameInner/ElementNameInner;"; +constexpr const char* CLASSNAME_SKILL_INNER = "LbundleManager/SkillInner/SkillInner;"; +constexpr const char* CLASSNAME_SKILLURI_INNER = "LbundleManager/SkillInner/SkillUriInner;"; +constexpr const char* CLASSNAME_BUNDLERESINFO_INNER = "LbundleManager/BundleResourceInfoInner/BundleResourceInfoInner;"; constexpr const char* CLASSNAME_LAUNCHER_ABILITY_RESOURCE_INFO_INNER = "LbundleManager/LauncherAbilityResourceInfoInner/LauncherAbilityResourceInfoInner;"; -constexpr const char* CLASSNAME_SHORTCUTINFO = "LbundleManager/ShortcutInfo/ShortcutInfoInner;"; -constexpr const char* CLASSNAME_SHORTCUTWANT = "LbundleManager/ShortcutInfo/ShortcutWantInner;"; -constexpr const char* CLASSNAME_SHORTCUT_PARAMETERITEM = "LbundleManager/ShortcutInfo/ParameterItemInner;"; +constexpr const char* CLASSNAME_SHORTCUTINFO_INNER = "LbundleManager/ShortcutInfo/ShortcutInfoInner;"; +constexpr const char* CLASSNAME_SHORTCUTWANT_INNER = "LbundleManager/ShortcutInfo/ShortcutWantInner;"; +constexpr const char* CLASSNAME_SHORTCUT_PARAMETERITEM_INNER = "LbundleManager/ShortcutInfo/ParameterItemInner;"; constexpr const char* CLASSNAME_LAUNCHER_ABILITY_INFO_INNER = "LbundleManager/LauncherAbilityInfoInner/LauncherAbilityInfoInner;"; constexpr const char* CLASSNAME_BUNDLE_CHANGED_INFO_INNER = @@ -234,6 +237,122 @@ constexpr const char* PROPERTYNAME_ACTION = "action"; constexpr const char* PATH_PREFIX = "/data/app/el1/bundle/public"; constexpr const char* CODE_PATH_PREFIX = "/data/storage/el1/bundle/"; constexpr const char* CONTEXT_DATA_STORAGE_BUNDLE = "/data/storage/el1/bundle/"; + +constexpr const char* CLASSNAME_BOOLEAN = "Lstd/core/Boolean;"; +constexpr const char* CLASSNAME_INT = "Lstd/core/Int;"; +constexpr const char* CLASSNAME_LONG = "Lstd/core/Long;"; +constexpr const char* CLASSNAME_DOUBLE = "Lstd/core/Double;"; +constexpr const char* CLASSNAME_ARRAY = "Lescompat/Array;"; + +struct ANIClassCacheItem { + ani_ref classRef = nullptr; + std::map classMethodMap; +}; +static std::mutex g_aniClassCacherMutex; +static std::map g_aniClassCache = { + { CLASSNAME_BOOLEAN, { } }, + { CLASSNAME_INT, { } }, + { CLASSNAME_LONG, { } }, + { CLASSNAME_DOUBLE, { } }, + { CLASSNAME_ARRAY, { } }, + { CLASSNAME_BUNDLEINFO_INNER, { } }, + { CLASSNAME_APPLICATIONINFO_INNER, { } }, + { CLASSNAME_MODULEMETADATA_INNER, { } }, + { CLASSNAME_METADATA_INNER, { } }, + { CLASSNAME_RESOURCE_INNER, { } }, + { CLASSNAME_MULTIAPPMODE_INNER, { } }, + { CLASSNAME_HAPMODULEINFO_INNER, { } }, + { CLASSNAME_ABILITYINFO_INNER, { } }, + { CLASSNAME_SKILL_INNER, { } }, + { CLASSNAME_WINDOWSIZE_INNER, { } }, + { CLASSNAME_EXTENSIONABILITYINFO_INNER, { } }, + { CLASSNAME_DEPENDENCY_INNER, { } }, + { CLASSNAME_PRELOADITEM_INNER, { } }, + { CLASSNAME_ROUTERITEM_INNER, { } }, + { CLASSNAME_DATAITEM_INNER, { } }, +}; + +static ani_class GetCacheClass(ani_env* env, const std::string& className) +{ + RETURN_NULL_IF_NULL(env); + + std::lock_guard lock(g_aniClassCacherMutex); + auto iter = g_aniClassCache.find(className); + if (iter == g_aniClassCache.end()) { + return nullptr; + } + if (iter->second.classRef != nullptr) { + return reinterpret_cast(iter->second.classRef); + } + + ani_class cls = nullptr; + ani_status status = env->FindClass(className.c_str(), &cls); + if (status != ANI_OK) { + APP_LOGE("FindClass %{public}s failed %{public}d", className.c_str(), status); + return nullptr; + } + ani_ref ref = nullptr; + status = env->GlobalReference_Create(cls, &ref); + if (status == ANI_OK) { + iter->second.classRef = ref; + } + + return cls; +} + +static ani_method GetCacheCtorMethod( + ani_env* env, ani_class cls, const std::string& ctorSig = Builder::BuildSignatureDescriptor({})) +{ + RETURN_NULL_IF_NULL(env); + RETURN_NULL_IF_NULL(cls); + + std::lock_guard lock(g_aniClassCacherMutex); + auto iter = std::find_if(g_aniClassCache.begin(), g_aniClassCache.end(), [env, cls](const auto& pair) { + ani_boolean equals = ANI_FALSE; + env->Reference_StrictEquals(pair.second.classRef, cls, &equals); + return equals == ANI_TRUE; + }); + if (iter == g_aniClassCache.end()) { + return nullptr; + } + + auto iterMethod = iter->second.classMethodMap.find(ctorSig); + if (iterMethod != iter->second.classMethodMap.end() && iterMethod->second != nullptr) { + return iterMethod->second; + } + + ani_method method = nullptr; + ani_status status = + env->Class_FindMethod(cls, Builder::BuildConstructorName().c_str(), ctorSig.c_str(), &method); + if (status != ANI_OK) { + APP_LOGE("Class_FindMethod ctorSig %{public}s failed %{public}d", ctorSig.c_str(), status); + return nullptr; + } + iter->second.classMethodMap[ctorSig] = method; + + return method; +} + +static ani_method GetCtorMethod( + ani_env* env, ani_class cls, const std::string& ctorSig = Builder::BuildSignatureDescriptor({})) +{ + RETURN_NULL_IF_NULL(env); + RETURN_NULL_IF_NULL(cls); + + ani_method method = GetCacheCtorMethod(env, cls, ctorSig); + if (method != nullptr) { + return method; + } + + ani_status status = + env->Class_FindMethod(cls, Builder::BuildConstructorName().c_str(), ctorSig.c_str(), &method); + if (status != ANI_OK) { + APP_LOGE("Class_FindMethod ctorSig %{public}s failed %{public}d", ctorSig.c_str(), status); + return nullptr; + } + + return method; +} } // namespace std::string CommonFunAni::AniStrToString(ani_env* env, ani_string aniStr) @@ -254,7 +373,7 @@ std::string CommonFunAni::AniStrToString(ani_env* env, ani_string aniStr) buffer.resize(strSize + 1); ani_size retSize = 0; status = env->String_GetUTF8(aniStr, buffer.data(), buffer.size(), &retSize); - if (status != ANI_OK || retSize == 0) { + if (status != ANI_OK) { APP_LOGE("String_GetUTF8SubString failed %{public}d", status); return ""; } @@ -291,28 +410,28 @@ ani_class CommonFunAni::CreateClassByName(ani_env* env, const std::string& class { RETURN_NULL_IF_NULL(env); - ani_class cls = nullptr; - ani_status status = env->FindClass(className.c_str(), &cls); - if (status != ANI_OK) { - APP_LOGE("FindClass failed %{public}d", status); - return nullptr; + ani_class cls = GetCacheClass(env, className); + if (cls == nullptr) { + ani_status status = env->FindClass(className.c_str(), &cls); + if (status != ANI_OK) { + APP_LOGE("FindClass %{public}s failed %{public}d", className.c_str(), status); + return nullptr; + } } + return cls; } ani_object CommonFunAni::CreateNewObjectByClass(ani_env* env, ani_class cls) { RETURN_NULL_IF_NULL(env); + RETURN_NULL_IF_NULL(cls); - ani_method method = nullptr; - ani_status status = env->Class_FindMethod(cls, "", ":V", &method); - if (status != ANI_OK) { - APP_LOGE("Class_FindMethod failed %{public}d", status); - return nullptr; - } + ani_method method = GetCtorMethod(env, cls); + RETURN_NULL_IF_NULL(method); ani_object object = nullptr; - status = env->Object_New(cls, method, &object); + ani_status status = env->Object_New(cls, method, &object); if (status != ANI_OK) { APP_LOGE("Object_New failed %{public}d", status); return nullptr; @@ -324,7 +443,7 @@ ani_object CommonFunAni::ConvertBundleInfo(ani_env* env, const BundleInfo& bundl { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_BUNDLEINFO); + ani_class cls = CreateClassByName(env, CLASSNAME_BUNDLEINFO_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -416,7 +535,7 @@ ani_object CommonFunAni::ConvertMetadata(ani_env* env, const Metadata& metadata) { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_METADATA); + ani_class cls = CreateClassByName(env, CLASSNAME_METADATA_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -446,7 +565,7 @@ ani_object CommonFunAni::ConvertMultiAppMode(ani_env* env, const MultiAppModeDat { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_MULTIAPPMODE); + ani_class cls = CreateClassByName(env, CLASSNAME_MULTIAPPMODE_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -468,7 +587,7 @@ ani_object CommonFunAni::ConvertModuleMetaInfosItem( { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_MODULEMETADATA); + ani_class cls = CreateClassByName(env, CLASSNAME_MODULEMETADATA_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -492,7 +611,7 @@ ani_object CommonFunAni::ConvertApplicationInfo(ani_env* env, const ApplicationI { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_APPLICATIONINFO); + ani_class cls = CreateClassByName(env, CLASSNAME_APPLICATIONINFO_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -635,7 +754,7 @@ ani_object CommonFunAni::ConvertAbilityInfo(ani_env* env, const AbilityInfo& abi { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_ABILITYINFO); + ani_class cls = CreateClassByName(env, CLASSNAME_ABILITYINFO_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -752,7 +871,7 @@ ani_object CommonFunAni::ConvertWindowSize(ani_env* env, const AbilityInfo& abil { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_WINDOWSIZE); + ani_class cls = CreateClassByName(env, CLASSNAME_WINDOWSIZE_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -783,7 +902,7 @@ ani_object CommonFunAni::ConvertExtensionInfo(ani_env* env, const ExtensionAbili { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_EXTENSIONABILITYINFO); + ani_class cls = CreateClassByName(env, CLASSNAME_EXTENSIONABILITYINFO_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -868,7 +987,7 @@ ani_object CommonFunAni::ConvertResource(ani_env* env, const Resource& resource) { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_RESOURCE); + ani_class cls = CreateClassByName(env, CLASSNAME_RESOURCE_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -894,7 +1013,7 @@ ani_object CommonFunAni::ConvertSignatureInfo(ani_env* env, const SignatureInfo& { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_SIGNATUREINFO); + ani_class cls = CreateClassByName(env, CLASSNAME_SIGNATUREINFO_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -927,7 +1046,7 @@ ani_object CommonFunAni::ConvertKeyValuePair( { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_DATAITEM); + ani_class cls = CreateClassByName(env, CLASSNAME_DATAITEM_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -948,14 +1067,14 @@ ani_object CommonFunAni::ConvertKeyValuePair( inline ani_object CommonFunAni::ConvertDataItem(ani_env* env, const std::pair& item) { - return ConvertKeyValuePair(env, item, CLASSNAME_DATAITEM); + return ConvertKeyValuePair(env, item, CLASSNAME_DATAITEM_INNER); } ani_object CommonFunAni::ConvertRouterItem(ani_env* env, const RouterItem& routerItem) { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_ROUTERITEM); + ani_class cls = CreateClassByName(env, CLASSNAME_ROUTERITEM_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -991,7 +1110,7 @@ ani_object CommonFunAni::ConvertRequestPermission(ani_env* env, const RequestPer { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_PERMISSION); + ani_class cls = CreateClassByName(env, CLASSNAME_PERMISSION_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1027,7 +1146,7 @@ ani_object CommonFunAni::ConvertRequestPermissionUsedScene( { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_USEDSCENE); + ani_class cls = CreateClassByName(env, CLASSNAME_USEDSCENE_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1050,7 +1169,7 @@ ani_object CommonFunAni::ConvertPreloadItem(ani_env* env, const PreloadItem& pre { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_PRELOADITEM); + ani_class cls = CreateClassByName(env, CLASSNAME_PRELOADITEM_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1069,7 +1188,7 @@ ani_object CommonFunAni::ConvertDependency(ani_env* env, const Dependency& depen { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_DEPENDENCY); + ani_class cls = CreateClassByName(env, CLASSNAME_DEPENDENCY_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1094,7 +1213,7 @@ ani_object CommonFunAni::ConvertHapModuleInfo(ani_env* env, const HapModuleInfo& { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_HAPMODULEINFO); + ani_class cls = CreateClassByName(env, CLASSNAME_HAPMODULEINFO_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1213,7 +1332,7 @@ ani_object CommonFunAni::ConvertElementName(ani_env* env, const ElementName& ele { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_ELEMENTNAME); + ani_class cls = CreateClassByName(env, CLASSNAME_ELEMENTNAME_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1256,7 +1375,7 @@ ani_object CommonFunAni::ConvertAbilitySkillUriInner(ani_env* env, const SkillUr { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_SKILLURI); + ani_class cls = CreateClassByName(env, CLASSNAME_SKILLURI_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1319,7 +1438,7 @@ ani_object CommonFunAni::ConvertAbilitySkillInner(ani_env* env, const Skill& ski { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_SKILL); + ani_class cls = CreateClassByName(env, CLASSNAME_SKILL_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1354,7 +1473,7 @@ ani_object CommonFunAni::ConvertAppCloneIdentity(ani_env* env, const std::string { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_APPCLONEIDENTITY); + ani_class cls = CreateClassByName(env, CLASSNAME_APPCLONEIDENTITY_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1376,7 +1495,7 @@ ani_object CommonFunAni::ConvertBundleResourceInfo(ani_env* env, const BundleRes { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_BUNDLERESINFO); + ani_class cls = CreateClassByName(env, CLASSNAME_BUNDLERESINFO_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1449,7 +1568,7 @@ ani_object CommonFunAni::ConvertShortcutInfo(ani_env* env, const ShortcutInfo& s { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_SHORTCUTINFO); + ani_class cls = CreateClassByName(env, CLASSNAME_SHORTCUTINFO_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1509,7 +1628,7 @@ ani_object CommonFunAni::ConvertShortcutIntent(ani_env* env, const ShortcutInten { RETURN_NULL_IF_NULL(env); - ani_class cls = CreateClassByName(env, CLASSNAME_SHORTCUTWANT); + ani_class cls = CreateClassByName(env, CLASSNAME_SHORTCUTWANT_INNER); RETURN_NULL_IF_NULL(cls); ani_object object = CreateNewObjectByClass(env, cls); @@ -1541,7 +1660,7 @@ ani_object CommonFunAni::ConvertShortcutIntent(ani_env* env, const ShortcutInten inline ani_object CommonFunAni::ConvertShortcutIntentParameter( ani_env* env, const std::pair& item) { - return ConvertKeyValuePair(env, item, CLASSNAME_SHORTCUT_PARAMETERITEM); + return ConvertKeyValuePair(env, item, CLASSNAME_SHORTCUT_PARAMETERITEM_INNER); } ani_object CommonFunAni::ConvertLauncherAbilityInfo(ani_env* env, const LauncherAbilityInfo& launcherAbility)