Loading cmds/installd/InstalldNativeService.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,33 @@ static bool prepare_app_profile_dir(const std::string& packageName, int32_t appI return true; } binder::Status InstalldNativeService::createAppDataBatched( const std::optional<std::vector<std::optional<std::string>>>& uuids, const std::optional<std::vector<std::optional<std::string>>>& packageNames, int32_t userId, int32_t flags, const std::vector<int32_t>& appIds, const std::vector<std::string>& seInfos, const std::vector<int32_t>& targetSdkVersions, int64_t* _aidl_return) { ENFORCE_UID(AID_SYSTEM); std::lock_guard<std::recursive_mutex> lock(mLock); ATRACE_BEGIN("createAppDataBatched"); binder::Status ret; for (size_t i = 0; i < uuids->size(); i++) { std::optional<std::string> packageName = packageNames->at(i); if (!packageName) { continue; } ret = createAppData(uuids->at(i), *packageName, userId, flags, appIds[i], seInfos[i], targetSdkVersions[i], _aidl_return); if (!ret.isOk()) { ATRACE_END(); return ret; } } ATRACE_END(); return ok(); } binder::Status InstalldNativeService::createAppData(const std::optional<std::string>& uuid, const std::string& packageName, int32_t userId, int32_t flags, int32_t appId, const std::string& seInfo, int32_t targetSdkVersion, int64_t* _aidl_return) { Loading cmds/installd/InstalldNativeService.h +6 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,12 @@ public: int32_t userSerial, int32_t flags); binder::Status destroyUserData(const std::optional<std::string>& uuid, int32_t userId, int32_t flags); binder::Status createAppDataBatched( const std::optional<std::vector<std::optional<std::string>>>& uuids, const std::optional<std::vector<std::optional<std::string>>>& packageNames, int32_t userId, int32_t flags, const std::vector<int32_t>& appIds, const std::vector<std::string>& seInfos, const std::vector<int32_t>& targetSdkVersions, int64_t* _aidl_return); binder::Status createAppData(const std::optional<std::string>& uuid, const std::string& packageName, int32_t userId, int32_t flags, int32_t appId, const std::string& seInfo, int32_t targetSdkVersion, int64_t* _aidl_return); Loading cmds/installd/binder/android/os/IInstalld.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ interface IInstalld { long createAppData(@nullable @utf8InCpp String uuid, in @utf8InCpp String packageName, int userId, int flags, int appId, in @utf8InCpp String seInfo, int targetSdkVersion); long createAppDataBatched(in @nullable @utf8InCpp String[] uuids, in @nullable @utf8InCpp String[] packageNames, in int userId, int flags, in int[] appIds, in @utf8InCpp String[] seInfos, in int[] targetSdkVersions); void restoreconAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName, int userId, int flags, int appId, @utf8InCpp String seInfo); void migrateAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName, Loading Loading
cmds/installd/InstalldNativeService.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,33 @@ static bool prepare_app_profile_dir(const std::string& packageName, int32_t appI return true; } binder::Status InstalldNativeService::createAppDataBatched( const std::optional<std::vector<std::optional<std::string>>>& uuids, const std::optional<std::vector<std::optional<std::string>>>& packageNames, int32_t userId, int32_t flags, const std::vector<int32_t>& appIds, const std::vector<std::string>& seInfos, const std::vector<int32_t>& targetSdkVersions, int64_t* _aidl_return) { ENFORCE_UID(AID_SYSTEM); std::lock_guard<std::recursive_mutex> lock(mLock); ATRACE_BEGIN("createAppDataBatched"); binder::Status ret; for (size_t i = 0; i < uuids->size(); i++) { std::optional<std::string> packageName = packageNames->at(i); if (!packageName) { continue; } ret = createAppData(uuids->at(i), *packageName, userId, flags, appIds[i], seInfos[i], targetSdkVersions[i], _aidl_return); if (!ret.isOk()) { ATRACE_END(); return ret; } } ATRACE_END(); return ok(); } binder::Status InstalldNativeService::createAppData(const std::optional<std::string>& uuid, const std::string& packageName, int32_t userId, int32_t flags, int32_t appId, const std::string& seInfo, int32_t targetSdkVersion, int64_t* _aidl_return) { Loading
cmds/installd/InstalldNativeService.h +6 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,12 @@ public: int32_t userSerial, int32_t flags); binder::Status destroyUserData(const std::optional<std::string>& uuid, int32_t userId, int32_t flags); binder::Status createAppDataBatched( const std::optional<std::vector<std::optional<std::string>>>& uuids, const std::optional<std::vector<std::optional<std::string>>>& packageNames, int32_t userId, int32_t flags, const std::vector<int32_t>& appIds, const std::vector<std::string>& seInfos, const std::vector<int32_t>& targetSdkVersions, int64_t* _aidl_return); binder::Status createAppData(const std::optional<std::string>& uuid, const std::string& packageName, int32_t userId, int32_t flags, int32_t appId, const std::string& seInfo, int32_t targetSdkVersion, int64_t* _aidl_return); Loading
cmds/installd/binder/android/os/IInstalld.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,9 @@ interface IInstalld { long createAppData(@nullable @utf8InCpp String uuid, in @utf8InCpp String packageName, int userId, int flags, int appId, in @utf8InCpp String seInfo, int targetSdkVersion); long createAppDataBatched(in @nullable @utf8InCpp String[] uuids, in @nullable @utf8InCpp String[] packageNames, in int userId, int flags, in int[] appIds, in @utf8InCpp String[] seInfos, in int[] targetSdkVersions); void restoreconAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName, int userId, int flags, int appId, @utf8InCpp String seInfo); void migrateAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName, Loading