Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aed3337f authored by Songchun Fan's avatar Songchun Fan
Browse files

Passing code path to installd moveCompleteApps

With 2-level code dirs installd can no longer guess app code path.

(Will cherry-pick into aosp after merging into master)

BUG: b/148844589 b/148237378
Test: atest AdoptableHostTest
Change-Id: Ifa60ada4688eaafea452847b9a5177ca821b3224
parent c4173b5f
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -1102,7 +1102,7 @@ binder::Status InstalldNativeService::destroyAppDataSnapshot(
binder::Status InstalldNativeService::moveCompleteApp(const std::unique_ptr<std::string>& fromUuid,
        const std::unique_ptr<std::string>& toUuid, const std::string& packageName,
        const std::string& dataAppName, int32_t appId, const std::string& seInfo,
        int32_t targetSdkVersion) {
        int32_t targetSdkVersion, const std::string& fromCodePath) {
    ENFORCE_UID(AID_SYSTEM);
    CHECK_ARGUMENT_UUID(fromUuid);
    CHECK_ARGUMENT_UUID(toUuid);
@@ -1119,13 +1119,12 @@ binder::Status InstalldNativeService::moveCompleteApp(const std::unique_ptr<std:

    // Copy app
    {
        auto from = create_data_app_package_path(from_uuid, data_app_name);
        auto to = create_data_app_package_path(to_uuid, data_app_name);
        auto to_parent = create_data_app_path(to_uuid);

        int rc = copy_directory_recursive(from.c_str(), to_parent.c_str());
        int rc = copy_directory_recursive(fromCodePath.c_str(), to_parent.c_str());
        if (rc != 0) {
            res = error(rc, "Failed copying " + from + " to " + to);
            res = error(rc, "Failed copying " + fromCodePath + " to " + to);
            goto fail;
        }

+1 −1
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ public:
    binder::Status moveCompleteApp(const std::unique_ptr<std::string>& fromUuid,
            const std::unique_ptr<std::string>& toUuid, const std::string& packageName,
            const std::string& dataAppName, int32_t appId, const std::string& seInfo,
            int32_t targetSdkVersion);
            int32_t targetSdkVersion, const std::string& fromCodePath);

    binder::Status dexopt(const std::string& apkPath, int32_t uid,
            const std::unique_ptr<std::string>& packageName, const std::string& instructionSet,
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ interface IInstalld {

    void moveCompleteApp(@nullable @utf8InCpp String fromUuid, @nullable @utf8InCpp String toUuid,
            @utf8InCpp String packageName, @utf8InCpp String dataAppName, int appId,
            @utf8InCpp String seInfo, int targetSdkVersion);
            @utf8InCpp String seInfo, int targetSdkVersion, @utf8InCpp String fromCodePath);

    void dexopt(@utf8InCpp String apkPath, int uid, @nullable @utf8InCpp String packageName,
            @utf8InCpp String instructionSet, int dexoptNeeded,