From 39c291e71e4b83fc3811a1199ebefd150d5610e9 Mon Sep 17 00:00:00 2001 From: huaqingsimeng Date: Thu, 24 Aug 2023 15:53:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=90=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=9C=BA=E6=99=AF=E4=B8=8B=E5=A4=87=E4=BB=BD=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huaqingsimeng --- services/backup.para | 5 ++++- services/backup_sa/src/module_ipc/service.cpp | 9 +++++++++ utils/include/b_ohos/startup/backup_para.h | 10 ++++++++++ utils/include/b_resources/b_constants.h | 6 +++++- utils/src/b_ohos/startup/backup_para.cpp | 18 ++++++++++++++++++ 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/services/backup.para b/services/backup.para index 73c5f0455..8f4a7ef77 100644 --- a/services/backup.para +++ b/services/backup.para @@ -11,4 +11,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -backup.debug.overrideExtensionConfig=false \ No newline at end of file +backup.debug.overrideExtensionConfig=false + +backup.debug.overrideAccountConfig=false +backup.debug.overrideAccountNumber=0 \ No newline at end of file diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index 6fa4f7f2b..9b77fdf77 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -42,6 +42,7 @@ #include "b_file_info.h" #include "b_json/b_json_cached_entity.h" #include "b_json/b_json_entity_caps.h" +#include "b_ohos/startup/backup_para.h" #include "b_process/b_multiuser.h" #include "b_resources/b_constants.h" #include "bundle_mgr_client.h" @@ -57,9 +58,17 @@ using namespace std; REGISTER_SYSTEM_ABILITY_BY_ID(Service, FILEMANAGEMENT_BACKUP_SERVICE_SA_ID, false); +namespace { +constexpr int32_t DEBUG_ID = 100; +} // namespace + /* Shell/Xts user id equal to 0/1, we need set default 100 */ static inline int32_t GetUserIdDefault() { + auto [isDebug, debugId] = BackupPara().GetBackupDebugOverrideAccount(); + if (isDebug && debugId > DEBUG_ID) { + return debugId; + } auto multiuser = BMultiuser::ParseUid(IPCSkeleton::GetCallingUid()); if ((multiuser.userId == BConstants::SYSTEM_UID) || (multiuser.userId == BConstants::XTS_UID)) { return BConstants::DEFAULT_USER_ID; diff --git a/utils/include/b_ohos/startup/backup_para.h b/utils/include/b_ohos/startup/backup_para.h index 74d4e848a..1f6cad364 100644 --- a/utils/include/b_ohos/startup/backup_para.h +++ b/utils/include/b_ohos/startup/backup_para.h @@ -16,6 +16,8 @@ #ifndef OHOS_FILEMGMT_BACKUP_BACKUP_PARA_H #define OHOS_FILEMGMT_BACKUP_BACKUP_PARA_H +#include + namespace OHOS::FileManagement::Backup { class BackupPara { public: @@ -25,6 +27,14 @@ public: * @return 获取的配置项backup.debug.overrideExtensionConfig值为true时则返回true,否则返回false */ bool GetBackupDebugOverrideExtensionConfig(); + + /** + * @brief 获取backup.para配置项backup.debug.overrideAccountConfig + * + * @return bool值为配置项backup.debug.overrideAccountConfig值 + * @return int32_t值为配置项backup.debug.overrideAccountNumber值 + */ + std::tuple GetBackupDebugOverrideAccount(); }; } // namespace OHOS::FileManagement::Backup diff --git a/utils/include/b_resources/b_constants.h b/utils/include/b_resources/b_constants.h index 0287ca83c..329bf50fb 100644 --- a/utils/include/b_resources/b_constants.h +++ b/utils/include/b_resources/b_constants.h @@ -104,9 +104,13 @@ static inline std::string ENTRY_NAME_LINKPATH = "linkpath"; static inline std::string ENTRY_NAME_PATH = "path"; static inline std::string ENTRY_NAME_SIZE = "size"; -// backup.para内配置项的名称,改配置项值为true时可在不更新hap包的情况下,可以读取包管理元数据配置文件的内容 +// backup.para内配置项的名称,该配置项值为true时可在不更新hap包的情况下,可以读取包管理元数据配置文件的内容 static inline std::string BACKUP_DEBUG_OVERRIDE_EXTENSION_CONFIG_KEY = "backup.debug.overrideExtensionConfig"; +// backup.para内配置项的名称,该配置项AccountConfig为true时存在时,可以按照配置的AccountNumber备份恢复 +static inline std::string BACKUP_DEBUG_OVERRIDE_ACCOUNT_CONFIG_KEY = "backup.debug.overrideAccountConfig"; +static inline std::string BACKUP_DEBUG_OVERRIDE_ACCOUNT_NUMBER_KEY = "backup.debug.overrideAccountNumber"; + // 应用备份数据暂存路径 static inline std::string_view SA_BUNDLE_BACKUP_BACKUP = "/backup/"; static inline std::string_view SA_BUNDLE_BACKUP_RESTORE = "/restore/"; diff --git a/utils/src/b_ohos/startup/backup_para.cpp b/utils/src/b_ohos/startup/backup_para.cpp index 2c7abcb5f..8047ef0e1 100644 --- a/utils/src/b_ohos/startup/backup_para.cpp +++ b/utils/src/b_ohos/startup/backup_para.cpp @@ -65,4 +65,22 @@ bool BackupPara::GetBackupDebugOverrideExtensionConfig() } return value == "true"; } + +tuple BackupPara::GetBackupDebugOverrideAccount() +{ + auto [getCfgParaValSucc, value] = GetConfigParameterValue(BConstants::BACKUP_DEBUG_OVERRIDE_ACCOUNT_CONFIG_KEY, + BConstants::BACKUP_PARA_VALUE_MAX); + if (!getCfgParaValSucc) { + return {false, 0}; + } + if (value == "true") { + auto [getCfgParaValSucc, value] = GetConfigParameterValue(BConstants::BACKUP_DEBUG_OVERRIDE_ACCOUNT_NUMBER_KEY, + BConstants::BACKUP_PARA_VALUE_MAX); + if (!getCfgParaValSucc) { + return {false, 0}; + } + return {true, stoi(value)}; + } + return {false, 0}; +} } // namespace OHOS::FileManagement::Backup \ No newline at end of file -- Gitee