Merge "Fix PackageSetting isUpdatedSystemApp and SYSTEM_EXT rescan" into rvc-dev
This commit is contained in:
@@ -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());
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user