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

Commit d7a1ae06 authored by gang.huang's avatar gang.huang
Browse files

When the sharedUserSetting of the application on /system is different from the...

When the sharedUserSetting of the application on /system is different from the sharedUserSetting on /data, we should trust the sharedUserSetting on /system

A new system app appeared by OTA, but we already had a non-system one of the same name installed earlier, if the the sharedUserSetting of the application on /system is different from
the sharedUserSetting on /data, and the version on system is smaller than the version on /data, the OTA upgrade will fail.

Bug: 272714709

Test: Manual.
Test: 1] installed an application A on /data
Test: 2] in OTA target package preload an application B on /system.
         which has the same package name and signature with A,
         but the sharedUserSetting of the application on /system
         is different from the sharedUserSetting on /data
Test: 3] OTA upgrade
Change-Id: I21b0c24ae363ff6be06dcd0f187273200b2991a6
parent c44c3153
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -3938,10 +3938,14 @@ final class InstallPackageHelper {
                    deletePackageHelper.deletePackageLIF(parsedPackage.getPackageName(), null, true,
                            mPm.mUserManager.getUserIds(), 0, null, false);
                }
            } else if (newPkgVersionGreater) {
            } else if (newPkgVersionGreater || newSharedUserSetting) {
                // The application on /system is newer than the application on /data.
                // Simply remove the application on /data [keeping application data]
                // and replace it with the version on /system.
                // Also, if the sharedUserSetting of the application on /system is different
                // from the sharedUserSetting on data, we should trust the sharedUserSetting
                // on /system, even if the application version on /system is smaller than
                // the version on /data.
                logCriticalInfo(Log.WARN,
                        "System package enabled;"
                                + " name: " + pkgSetting.getPackageName()