Loading services/core/java/com/android/server/pm/PackageManagerService.java +9 −6 Original line number Original line Diff line number Diff line Loading @@ -10969,10 +10969,10 @@ public class PackageManagerService extends IPackageManager.Stub // to null here, only to reset them at a later point. // to null here, only to reset them at a later point. Settings.updatePackageSetting(pkgSetting, disabledPkgSetting, sharedUserSetting, Settings.updatePackageSetting(pkgSetting, disabledPkgSetting, sharedUserSetting, destCodeFile, destResourceFile, parsedPackage.getNativeLibraryDir(), destCodeFile, destResourceFile, parsedPackage.getNativeLibraryDir(), AndroidPackageUtils.getRawPrimaryCpuAbi(parsedPackage), AndroidPackageUtils.getPrimaryCpuAbi(parsedPackage, pkgSetting), AndroidPackageUtils.getRawSecondaryCpuAbi(parsedPackage), AndroidPackageUtils.getSecondaryCpuAbi(parsedPackage, pkgSetting), PackageInfoWithoutStateUtils.appInfoFlags(parsedPackage), PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting), PackageInfoWithoutStateUtils.appInfoPrivateFlags(parsedPackage), PackageInfoUtils.appInfoPrivateFlags(parsedPackage, pkgSetting), UserManagerService.getInstance(), UserManagerService.getInstance(), usesStaticLibraries, parsedPackage.getUsesStaticLibrariesVersions(), usesStaticLibraries, parsedPackage.getUsesStaticLibrariesVersions(), parsedPackage.getMimeGroups()); parsedPackage.getMimeGroups()); Loading Loading @@ -11164,6 +11164,8 @@ public class PackageManagerService extends IPackageManager.Stub // TODO(b/135203078): Remove, move to constructor // TODO(b/135203078): Remove, move to constructor pkgSetting.pkg = parsedPackage; pkgSetting.pkg = parsedPackage; pkgSetting.pkgFlags = PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting); pkgSetting.pkgFlags = PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting); pkgSetting.pkgPrivateFlags = PackageInfoUtils.appInfoPrivateFlags(parsedPackage, pkgSetting); if (parsedPackage.getLongVersionCode() != pkgSetting.versionCode) { if (parsedPackage.getLongVersionCode() != pkgSetting.versionCode) { pkgSetting.versionCode = parsedPackage.getLongVersionCode(); pkgSetting.versionCode = parsedPackage.getLongVersionCode(); } } Loading Loading @@ -16954,6 +16956,7 @@ public class PackageManagerService extends IPackageManager.Stub final boolean vendor = oldPackage.isVendor(); final boolean vendor = oldPackage.isVendor(); final boolean product = oldPackage.isProduct(); final boolean product = oldPackage.isProduct(); final boolean odm = oldPackage.isOdm(); final boolean odm = oldPackage.isOdm(); final boolean systemExt = oldPackage.isSystemExt(); final @ParseFlags int systemParseFlags = parseFlags; final @ParseFlags int systemParseFlags = parseFlags; final @ScanFlags int systemScanFlags = scanFlags final @ScanFlags int systemScanFlags = scanFlags | SCAN_AS_SYSTEM | SCAN_AS_SYSTEM Loading @@ -16961,14 +16964,14 @@ public class PackageManagerService extends IPackageManager.Stub | (oem ? SCAN_AS_OEM : 0) | (oem ? SCAN_AS_OEM : 0) | (vendor ? SCAN_AS_VENDOR : 0) | (vendor ? SCAN_AS_VENDOR : 0) | (product ? SCAN_AS_PRODUCT : 0) | (product ? SCAN_AS_PRODUCT : 0) | (odm ? SCAN_AS_ODM : 0); | (odm ? SCAN_AS_ODM : 0) | (systemExt ? SCAN_AS_SYSTEM_EXT : 0); if (DEBUG_INSTALL) { if (DEBUG_INSTALL) { Slog.d(TAG, "replaceSystemPackageLI: new=" + parsedPackage Slog.d(TAG, "replaceSystemPackageLI: new=" + parsedPackage + ", old=" + oldPackage); + ", old=" + oldPackage); } } res.setReturnCode(PackageManager.INSTALL_SUCCEEDED); res.setReturnCode(PackageManager.INSTALL_SUCCEEDED); ps.getPkgState().setUpdatedSystemApp(true); targetParseFlags = systemParseFlags; targetParseFlags = systemParseFlags; targetScanFlags = systemScanFlags; targetScanFlags = systemScanFlags; } else { // non system replace } else { // non system replace services/core/java/com/android/server/pm/Settings.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -521,6 +521,9 @@ public final class Settings { p.secondaryCpuAbiString, p.cpuAbiOverrideString, p.secondaryCpuAbiString, p.cpuAbiOverrideString, p.appId, p.versionCode, p.pkgFlags, p.pkgPrivateFlags, p.appId, p.versionCode, p.pkgFlags, p.pkgPrivateFlags, p.usesStaticLibraries, p.usesStaticLibrariesVersions, p.mimeGroups); p.usesStaticLibraries, p.usesStaticLibrariesVersions, p.mimeGroups); if (ret != null) { ret.getPkgState().setUpdatedSystemApp(false); } mDisabledSysPackages.remove(name); mDisabledSysPackages.remove(name); return ret; return ret; } } Loading services/core/java/com/android/server/pm/permission/PermissionManagerService.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -2794,7 +2794,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } if ((changedInstallPermission || replace) && !ps.areInstallPermissionsFixed() && if ((changedInstallPermission || replace) && !ps.areInstallPermissionsFixed() && !ps.isSystem() || !ps.getPkgState().isUpdatedSystemApp()) { !ps.isSystem() || ps.getPkgState().isUpdatedSystemApp()) { // This is the first that we have heard about this package, so the // This is the first that we have heard about this package, so the // permissions we have now selected are fixed until explicitly // permissions we have now selected are fixed until explicitly // changed. // changed. Loading services/core/java/com/android/server/pm/pkg/PackageStateUnserialized.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -35,6 +35,9 @@ import java.util.List; * * * It is assumed that anything inside the package was not cached or written to disk, so none of * It is assumed that anything inside the package was not cached or written to disk, so none of * these fields are either. They must be set on every boot from other state on the device. * these fields are either. They must be set on every boot from other state on the device. * * These fields are also not copied into any cloned PackageSetting, to preserve the old behavior * where they would be lost implicitly by re-generating the package object. */ */ @DataClass(genSetters = true, genConstructor = false, genBuilder = false) @DataClass(genSetters = true, genConstructor = false, genBuilder = false) public class PackageStateUnserialized { public class PackageStateUnserialized { Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +9 −6 Original line number Original line Diff line number Diff line Loading @@ -10969,10 +10969,10 @@ public class PackageManagerService extends IPackageManager.Stub // to null here, only to reset them at a later point. // to null here, only to reset them at a later point. Settings.updatePackageSetting(pkgSetting, disabledPkgSetting, sharedUserSetting, Settings.updatePackageSetting(pkgSetting, disabledPkgSetting, sharedUserSetting, destCodeFile, destResourceFile, parsedPackage.getNativeLibraryDir(), destCodeFile, destResourceFile, parsedPackage.getNativeLibraryDir(), AndroidPackageUtils.getRawPrimaryCpuAbi(parsedPackage), AndroidPackageUtils.getPrimaryCpuAbi(parsedPackage, pkgSetting), AndroidPackageUtils.getRawSecondaryCpuAbi(parsedPackage), AndroidPackageUtils.getSecondaryCpuAbi(parsedPackage, pkgSetting), PackageInfoWithoutStateUtils.appInfoFlags(parsedPackage), PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting), PackageInfoWithoutStateUtils.appInfoPrivateFlags(parsedPackage), PackageInfoUtils.appInfoPrivateFlags(parsedPackage, pkgSetting), UserManagerService.getInstance(), UserManagerService.getInstance(), usesStaticLibraries, parsedPackage.getUsesStaticLibrariesVersions(), usesStaticLibraries, parsedPackage.getUsesStaticLibrariesVersions(), parsedPackage.getMimeGroups()); parsedPackage.getMimeGroups()); Loading Loading @@ -11164,6 +11164,8 @@ public class PackageManagerService extends IPackageManager.Stub // TODO(b/135203078): Remove, move to constructor // TODO(b/135203078): Remove, move to constructor pkgSetting.pkg = parsedPackage; pkgSetting.pkg = parsedPackage; pkgSetting.pkgFlags = PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting); pkgSetting.pkgFlags = PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting); pkgSetting.pkgPrivateFlags = PackageInfoUtils.appInfoPrivateFlags(parsedPackage, pkgSetting); if (parsedPackage.getLongVersionCode() != pkgSetting.versionCode) { if (parsedPackage.getLongVersionCode() != pkgSetting.versionCode) { pkgSetting.versionCode = parsedPackage.getLongVersionCode(); pkgSetting.versionCode = parsedPackage.getLongVersionCode(); } } Loading Loading @@ -16954,6 +16956,7 @@ public class PackageManagerService extends IPackageManager.Stub final boolean vendor = oldPackage.isVendor(); final boolean vendor = oldPackage.isVendor(); final boolean product = oldPackage.isProduct(); final boolean product = oldPackage.isProduct(); final boolean odm = oldPackage.isOdm(); final boolean odm = oldPackage.isOdm(); final boolean systemExt = oldPackage.isSystemExt(); final @ParseFlags int systemParseFlags = parseFlags; final @ParseFlags int systemParseFlags = parseFlags; final @ScanFlags int systemScanFlags = scanFlags final @ScanFlags int systemScanFlags = scanFlags | SCAN_AS_SYSTEM | SCAN_AS_SYSTEM Loading @@ -16961,14 +16964,14 @@ public class PackageManagerService extends IPackageManager.Stub | (oem ? SCAN_AS_OEM : 0) | (oem ? SCAN_AS_OEM : 0) | (vendor ? SCAN_AS_VENDOR : 0) | (vendor ? SCAN_AS_VENDOR : 0) | (product ? SCAN_AS_PRODUCT : 0) | (product ? SCAN_AS_PRODUCT : 0) | (odm ? SCAN_AS_ODM : 0); | (odm ? SCAN_AS_ODM : 0) | (systemExt ? SCAN_AS_SYSTEM_EXT : 0); if (DEBUG_INSTALL) { if (DEBUG_INSTALL) { Slog.d(TAG, "replaceSystemPackageLI: new=" + parsedPackage Slog.d(TAG, "replaceSystemPackageLI: new=" + parsedPackage + ", old=" + oldPackage); + ", old=" + oldPackage); } } res.setReturnCode(PackageManager.INSTALL_SUCCEEDED); res.setReturnCode(PackageManager.INSTALL_SUCCEEDED); ps.getPkgState().setUpdatedSystemApp(true); targetParseFlags = systemParseFlags; targetParseFlags = systemParseFlags; targetScanFlags = systemScanFlags; targetScanFlags = systemScanFlags; } else { // non system replace } else { // non system replace
services/core/java/com/android/server/pm/Settings.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -521,6 +521,9 @@ public final class Settings { p.secondaryCpuAbiString, p.cpuAbiOverrideString, p.secondaryCpuAbiString, p.cpuAbiOverrideString, p.appId, p.versionCode, p.pkgFlags, p.pkgPrivateFlags, p.appId, p.versionCode, p.pkgFlags, p.pkgPrivateFlags, p.usesStaticLibraries, p.usesStaticLibrariesVersions, p.mimeGroups); p.usesStaticLibraries, p.usesStaticLibrariesVersions, p.mimeGroups); if (ret != null) { ret.getPkgState().setUpdatedSystemApp(false); } mDisabledSysPackages.remove(name); mDisabledSysPackages.remove(name); return ret; return ret; } } Loading
services/core/java/com/android/server/pm/permission/PermissionManagerService.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -2794,7 +2794,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } if ((changedInstallPermission || replace) && !ps.areInstallPermissionsFixed() && if ((changedInstallPermission || replace) && !ps.areInstallPermissionsFixed() && !ps.isSystem() || !ps.getPkgState().isUpdatedSystemApp()) { !ps.isSystem() || ps.getPkgState().isUpdatedSystemApp()) { // This is the first that we have heard about this package, so the // This is the first that we have heard about this package, so the // permissions we have now selected are fixed until explicitly // permissions we have now selected are fixed until explicitly // changed. // changed. Loading
services/core/java/com/android/server/pm/pkg/PackageStateUnserialized.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -35,6 +35,9 @@ import java.util.List; * * * It is assumed that anything inside the package was not cached or written to disk, so none of * It is assumed that anything inside the package was not cached or written to disk, so none of * these fields are either. They must be set on every boot from other state on the device. * these fields are either. They must be set on every boot from other state on the device. * * These fields are also not copied into any cloned PackageSetting, to preserve the old behavior * where they would be lost implicitly by re-generating the package object. */ */ @DataClass(genSetters = true, genConstructor = false, genBuilder = false) @DataClass(genSetters = true, genConstructor = false, genBuilder = false) public class PackageStateUnserialized { public class PackageStateUnserialized { Loading