diff --git a/services/backup.para b/services/backup.para index 73c5f04554ae3cf0efa6238c91c7340130ce8ccd..8f4a7ef77e06ae5f2ab68bcd25c110aedf2b8f22 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 6fa4f7f2b996d8724718fc4091665915bdfd3e55..9b77fdf772a1f0a8a85156d5bb7b8f526ef58a23 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 74d4e848a1dc8e2b5b0023bd530082aec1c02691..1f6cad36477a496240c1fadba25d45e2b4ae3f5e 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 0287ca83c447837dae2f4255ebb1531ec4a660da..329bf50fb7eff5a2624f222833d31c44c9f45fc7 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 2c7abcb5fb32d81d784f976a45ddfd1b96b09c13..8047ef0e1ae2a2e5d9aea18b52bca320ad80384b 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