From 9a8a499671e64493e3a5e62db367e2fa65a76478 Mon Sep 17 00:00:00 2001 From: wangdengjia Date: Thu, 11 Nov 2021 11:42:45 +0800 Subject: [PATCH] IssueNo:#I4HTFS Description:bms adaptation Sig:appexecfwk Feature or Bugfix:Feature Binary Source:No Signed-off-by: wangdengjia Change-Id: I8c41ed62e3ddf654c14676a23fb2820c1aa09d74 Signed-off-by: wangdengjia --- services/bundlemgr_lite/BUILD.gn | 4 +- .../bundlemgr_lite/include/bundle_common.h | 20 +++++----- .../include/gt_bundle_manager_service.h | 4 -- .../bundlemgr_lite/src/bundle_mgr_service.cpp | 4 ++ .../src/gt_bundle_extractor.cpp | 4 +- .../src/gt_bundle_installer.cpp | 8 ++++ .../src/gt_bundle_manager_service.cpp | 38 +++++++++++++------ 7 files changed, 53 insertions(+), 29 deletions(-) diff --git a/services/bundlemgr_lite/BUILD.gn b/services/bundlemgr_lite/BUILD.gn index 42f73ed..60bbb54 100644 --- a/services/bundlemgr_lite/BUILD.gn +++ b/services/bundlemgr_lite/BUILD.gn @@ -46,8 +46,6 @@ if (ohos_kernel_type == "liteos_m") { "${appexecfwk_lite_path}/utils/bundle_lite", "${appexecfwk_lite_path}/frameworks/bundle_lite/include", "//base/startup/syspara_lite/interfaces/kits/", - "//third_party/jerryscript/jerry-core/api", - "//third_party/jerryscript/jerry-core/include", "${aafwk_lite_path}/interfaces/kits/ability_lite/slite", "${aafwk_lite_path}/services/abilitymgr_lite/include", "${aafwk_lite_path}/interfaces/innerkits/abilitymgr_lite", @@ -57,6 +55,8 @@ if (ohos_kernel_type == "liteos_m") { "//base/global/resmgr_lite/interfaces/innerkits/include", "//foundation/distributedschedule/samgr_lite/interfaces/kits/registry", "//foundation/distributedschedule/samgr_lite/interfaces/kits/samgr", + "//third_party/jerryscript/jerry-core/api", + "//third_party/jerryscript/jerry-core/include", "//third_party/cJSON", "//third_party/zlib", "//third_party/zlib/contrib/minizip", diff --git a/services/bundlemgr_lite/include/bundle_common.h b/services/bundlemgr_lite/include/bundle_common.h index 58aaade..076e079 100755 --- a/services/bundlemgr_lite/include/bundle_common.h +++ b/services/bundlemgr_lite/include/bundle_common.h @@ -147,22 +147,22 @@ const uint8_t MAX_VERSION_NAME_LEN = 127; const uint16_t MAX_LABLE_LEN = 255; #else const char DEFAULT_DEVICE_TYPE[] = "fitnessWatch"; -const char INSTALL_PATH[] = "user/ace/run"; -const char DATA_PATH[] = "user/ace/data"; -const char SYSTEM_BUNDLE_PATH[] = "system/ace/sys"; -const char THIRD_SYSTEM_BUNDLE_PATH[] = "system/ace/vendor"; -const char UNINSTALL_THIRD_SYSTEM_BUNDLE_JSON[] = "user/ace/etc/uninstalled_delbundle.json"; -const char THIRD_SYSTEM_BUNDLE_JSON[] = "user/ace/etc/third_system_bundle.json"; -const char JSON_PATH[] = "user/ace/etc/bundles/"; -const char JSON_PATH_NO_SLASH_END[] = "user/ace/etc/bundles"; +const char INSTALL_PATH[] = "/data/user/ace/run"; +const char DATA_PATH[] = "/data/user/ace/data"; +const char SYSTEM_BUNDLE_PATH[] = "/data/system/ace/sys"; +const char THIRD_SYSTEM_BUNDLE_PATH[] = "/data/system/ace/vendor"; +const char UNINSTALL_THIRD_SYSTEM_BUNDLE_JSON[] = "/data/user/ace/etc/uninstalled_delbundle.json"; +const char THIRD_SYSTEM_BUNDLE_JSON[] = "/data/user/ace/etc/third_system_bundle.json"; +const char JSON_PATH[] = "/data/user/ace/etc/bundles/"; +const char JSON_PATH_NO_SLASH_END[] = "/data/user/ace/etc/bundles"; // store bundle permissions for IAM -const char PERMISSIONS_PATH[] = "user/ace/etc/permissions"; +const char PERMISSIONS_PATH[] = "/data/user/ace/etc/permissions"; const char ASSET_JS_PATH[] = "/assets/js/default"; const char ICON_NAME[] = "/icon.bin"; const char SMALL_ICON_NAME[] = "/icon_small.bin"; const char DEFAULT_ICON_SETTING[] = "$media:icon"; const char INSTALL_FILE_SUFFIX[] = ".bin"; -const char TMP_RESOURCE_DIR[] = "user/ace/run/tmpResource"; +const char TMP_RESOURCE_DIR[] = "/data/user/ace/run/tmpResource"; const char RESOURCES_RAW_FILE[] = "/resources/rawfile"; const char RAW_FILE[] = "/rawfile"; const uint16_t READ_SIZE = 1024 * 4; diff --git a/services/bundlemgr_lite/include/gt_bundle_manager_service.h b/services/bundlemgr_lite/include/gt_bundle_manager_service.h index 4fa333f..a381438 100755 --- a/services/bundlemgr_lite/include/gt_bundle_manager_service.h +++ b/services/bundlemgr_lite/include/gt_bundle_manager_service.h @@ -123,10 +123,6 @@ void EnableServiceWdg(void); void DisableServiceWdg(void); void SetCurrentBundle(const char *name); const char *GetCurrentBundle(); - -#ifdef __LITEOS_M__ -void InstallCallbackFunc(const uint8_t resultCode, const void *resultMessage); -#endif } #endif // OHOS_GT_BUNDLE_MANAGER_SERVICE_H \ No newline at end of file diff --git a/services/bundlemgr_lite/src/bundle_mgr_service.cpp b/services/bundlemgr_lite/src/bundle_mgr_service.cpp index e4a3d71..59eddf6 100755 --- a/services/bundlemgr_lite/src/bundle_mgr_service.cpp +++ b/services/bundlemgr_lite/src/bundle_mgr_service.cpp @@ -98,7 +98,11 @@ BOOL BundleMgrService::ServiceMessageHandle(Service *service, Request *request) TaskConfig BundleMgrService::GetServiceTaskConfig(Service *service) { +#ifdef __LITEOS_M__ + TaskConfig config = {LEVEL_HIGH, PRI_ABOVE_NORMAL, STACK_SIZE, QUEUE_SIZE, SINGLE_TASK}; +#else TaskConfig config = {LEVEL_HIGH, PRI_BELOW_NORMAL, STACK_SIZE, QUEUE_SIZE, SINGLE_TASK}; +#endif return config; } } // namespace OHOS diff --git a/services/bundlemgr_lite/src/gt_bundle_extractor.cpp b/services/bundlemgr_lite/src/gt_bundle_extractor.cpp index 2e506be..5a3f6eb 100755 --- a/services/bundlemgr_lite/src/gt_bundle_extractor.cpp +++ b/services/bundlemgr_lite/src/gt_bundle_extractor.cpp @@ -252,7 +252,9 @@ uint8_t GtBundleExtractor::ExtractBundleParam(const char *path, int32_t &fpStart if (errorCode != ERR_OK) { return errorCode; } - +#ifdef __LITEOS_M__ + close(fp); +#endif if (strlen(*bundleName) > MAX_BUNDLE_NAME_LEN || strlen(*bundleName) < MIN_BUNDLE_NAME_LEN) { return ERR_APPEXECFWK_INSTALL_FAILED_PARSE_INVALID_BUNDLENAME_LENGTH; } diff --git a/services/bundlemgr_lite/src/gt_bundle_installer.cpp b/services/bundlemgr_lite/src/gt_bundle_installer.cpp index 5386839..1376143 100755 --- a/services/bundlemgr_lite/src/gt_bundle_installer.cpp +++ b/services/bundlemgr_lite/src/gt_bundle_installer.cpp @@ -238,6 +238,14 @@ uint8_t GtBundleInstaller::ProcessBundleInstall(const char *path, const char *ra uint8_t errorCode = PreCheckBundle(path, fp, signatureInfo, fileSize, bundleStyle); CHECK_PRO_RESULT(errorCode, fp, permissions, bundleInfo, signatureInfo); (void) GtManagerService::GetInstance().ReportInstallCallback(OPERATION_DOING, 0, BMS_SECOND_FINISHED_PROCESS, installerCallback); +#ifdef __LITEOS_M__ + fp = open(path, O_RDONLY, S_IREAD); + if (fp < 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "[BMS] process bundle install fp open fail"); + errorCode = ERR_APPEXECFWK_INSTALL_FAILED_FILE_NOT_EXISTS; + } + CHECK_PRO_RESULT(errorCode, fp, permissions, bundleInfo, signatureInfo); +#endif // parse HarmoyProfile.json, get permissions and bundleInfo errorCode = GtBundleParser::ParseHapProfile(fp, fileSize, permissions, bundleRes, &bundleInfo); CHECK_PRO_RESULT(errorCode, fp, permissions, bundleInfo, signatureInfo); diff --git a/services/bundlemgr_lite/src/gt_bundle_manager_service.cpp b/services/bundlemgr_lite/src/gt_bundle_manager_service.cpp index 49faee3..e7467f6 100755 --- a/services/bundlemgr_lite/src/gt_bundle_manager_service.cpp +++ b/services/bundlemgr_lite/src/gt_bundle_manager_service.cpp @@ -63,15 +63,18 @@ GtManagerService::~GtManagerService() bool GtManagerService::Install(const char *hapPath, const InstallParam *installParam, InstallerCallback installerCallback) { + HILOG_INFO(HILOG_MODULE_AAFWK, "[BMS] install start"); if (installer_ == nullptr) { installer_ = new GtBundleInstaller(); } if (hapPath == nullptr) { return false; } +#ifndef __LITEOS_M__ if (installerCallback == nullptr) { return false; } +#endif char *path = reinterpret_cast(AdapterMalloc(strlen(hapPath) + 1)); if (path == nullptr) { return false; @@ -81,6 +84,7 @@ bool GtManagerService::Install(const char *hapPath, const InstallParam *installP return false; } +#ifndef __LITEOS_M__ // delete resource temp dir first (void) BundleUtil::RemoveDir(TMP_RESOURCE_DIR); // create new bundleInstallMsg @@ -109,13 +113,9 @@ bool GtManagerService::Install(const char *hapPath, const InstallParam *installP SetCurrentBundle(bundleInstallMsg_->bundleName); (void) ReportInstallCallback(OPERATION_DOING, 0, BMS_INSTALLATION_START, installerCallback); -#ifndef __LITEOS_M__ DisableServiceWdg(); ret = installer_->Install(path, installerCallback); EnableServiceWdg(); -#else - ret = installer_->Install(path, installerCallback); -#endif if (ret == 0) { (void) ReportInstallCallback(ret, BUNDLE_INSTALL_OK, BMS_INSTALLATION_COMPLETED, installerCallback); } else { @@ -123,6 +123,10 @@ bool GtManagerService::Install(const char *hapPath, const InstallParam *installP } SetCurrentBundle(nullptr); ClearSystemBundleInstallMsg(); +#else + uint8_t ret = installer_->Install(path, installerCallback); + HILOG_INFO(HILOG_MODULE_AAFWK, "[BMS] install ret is %d", ret); +#endif (void) BundleUtil::RemoveDir(TMP_RESOURCE_DIR); AdapterFree(path); return true; @@ -138,9 +142,11 @@ bool GtManagerService::Uninstall(const char *bundleName, const InstallParam *ins HILOG_ERROR(HILOG_MODULE_AAFWK, "[BMS] Parsed bundleName to be uninstalled is null"); return false; } +#ifndef __LITEOS_M__ if (installerCallback == nullptr) { return false; } +#endif char *innerBundleName = reinterpret_cast(AdapterMalloc(strlen(bundleName) + 1)); if (innerBundleName == nullptr) { return false; @@ -154,6 +160,7 @@ bool GtManagerService::Uninstall(const char *bundleName, const InstallParam *ins (void) ReportUninstallCallback(OPERATION_DOING, BUNDLE_UNINSTALL_DOING, innerBundleName, BMS_UNINSTALLATION_START, installerCallback); uint8_t ret = installer_->Uninstall(innerBundleName); + HILOG_INFO(HILOG_MODULE_AAFWK, "[BMS] uninstall ret is %d", ret); if (ret == 0) { (void) ReportUninstallCallback(ret, BUNDLE_UNINSTALL_OK, innerBundleName, BMS_INSTALLATION_COMPLETED, installerCallback); @@ -259,21 +266,25 @@ uint8_t GtManagerService::GetBundleInfosNoReplication(const int flags, BundleInf bool GtManagerService::RegisterInstallerCallback(InstallerCallback installerCallback) { +#ifndef __LITEOS_M__ if (installerCallback == nullptr) { return false; } +#endif InstallPreBundle(systemPathList_, installerCallback); return true; } void GtManagerService::InstallPreBundle(List systemPathList, InstallerCallback installerCallback) { +#ifndef __LITEOS_M__ if (!BundleUtil::IsDir(JSON_PATH_NO_SLASH_END)) { BundleUtil::MkDirs(JSON_PATH_NO_SLASH_END); InstallAllSystemBundle(installerCallback); RemoveSystemAppPathList(&systemPathList); return; } +#endif for (auto node = systemPathList.Begin(); node != systemPathList.End(); node = node->next_) { ToBeInstalledApp *toBeInstalledApp = node->value_; if (toBeInstalledApp->isUpdated) { @@ -355,6 +366,15 @@ void GtManagerService::ScanPackages() } #endif +#ifdef __LITEOS_M__ + if (!BundleUtil::MkDirs(INSTALL_PATH) || !BundleUtil::MkDirs(DATA_PATH) || + !BundleUtil::MkDirs(JSON_PATH)) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "[BMS] ScanPackages mkdirs failed!"); + } + if (!BundleUtil::IsDir(SYSTEM_BUNDLE_PATH)) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "[BMS] system bundle path is not exist, unable to pre install!"); + } +#endif // get third system bundle uninstall record cJSON *uninstallRecord = BundleUtil::GetJsonStream(UNINSTALL_THIRD_SYSTEM_BUNDLE_JSON); if (uninstallRecord == nullptr) { @@ -371,7 +391,8 @@ void GtManagerService::ScanPackages() ScanThirdApp(INSTALL_PATH, &systemPathList_); #ifdef __LITEOS_M__ - RegisterInstallerCallback(InstallCallbackFunc); + InstallerCallback installerCallback = nullptr; + RegisterInstallerCallback(installerCallback); #endif } @@ -1092,11 +1113,4 @@ const char *GetCurrentBundle() MutexRelease(&g_currentBundleMutex); return bundleName; } - -#ifdef __LITEOS_M__ -void InstallCallbackFunc(const uint8_t resultCode, const void *resultMessage) -{ - return; } -#endif -} \ No newline at end of file