Loading services/core/java/com/android/server/pm/PackageManagerService.java +9 −7 Original line number Diff line number Diff line Loading @@ -1724,8 +1724,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService } public PackageManagerService(PackageManagerServiceInjector injector, boolean factoryTest, final String buildFingerprint, final boolean isEngBuild, final boolean isUserDebugBuild, final int sdkVersion, final String incrementalVersion) { final String partitionsFingerprint, final boolean isEngBuild, final boolean isUserDebugBuild, final int sdkVersion, final String incrementalVersion) { mIsEngBuild = isEngBuild; mIsUserDebugBuild = isUserDebugBuild; mSdkVersion = sdkVersion; Loading Loading @@ -1971,10 +1971,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService final VersionInfo ver = mSettings.getInternalVersion(); mIsUpgrade = !buildFingerprint.equals(ver.fingerprint); !partitionsFingerprint.equals(ver.fingerprint); if (mIsUpgrade) { PackageManagerServiceUtils.logCriticalInfo(Log.INFO, "Upgrading from " + ver.fingerprint + " to " + PackagePartitions.FINGERPRINT); PackageManagerServiceUtils.logCriticalInfo(Log.INFO, "Upgrading from " + ver.fingerprint + " (" + ver.buildFingerprint + ") to " + PackagePartitions.FINGERPRINT + " (" + Build.FINGERPRINT + ")"); } mInitAppsHelper = new InitAppsHelper(this, mApexManager, mInstallPackageHelper, Loading Loading @@ -2081,14 +2082,14 @@ public class PackageManagerService implements PackageSender, TestUtilityService + ((SystemClock.uptimeMillis() - startTime) / 1000f) + " seconds"); // If the build fingerprint has changed since the last time we booted, // If the partitions fingerprint has changed since the last time we booted, // we need to re-grant app permission to catch any new ones that // appear. This is really a hack, and means that apps can in some // cases get permissions that the user didn't initially explicitly // allow... it would be nice to have some better way to handle // this situation. if (mIsUpgrade) { Slog.i(TAG, "Build fingerprint changed from " + ver.fingerprint + " to " Slog.i(TAG, "Partitions fingerprint changed from " + ver.fingerprint + " to " + PackagePartitions.FINGERPRINT + "; regranting permissions for internal storage"); } Loading Loading @@ -2120,6 +2121,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService | Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES); } } ver.buildFingerprint = Build.FINGERPRINT; ver.fingerprint = PackagePartitions.FINGERPRINT; } Loading services/core/java/com/android/server/pm/Settings.java +15 −1 Original line number Diff line number Diff line Loading @@ -353,6 +353,7 @@ public final class Settings implements Watchable, Snappable { private static final String ATTR_SPLASH_SCREEN_THEME = "splash-screen-theme"; private static final String ATTR_PACKAGE_NAME = "packageName"; private static final String ATTR_BUILD_FINGERPRINT = "buildFingerprint"; private static final String ATTR_FINGERPRINT = "fingerprint"; private static final String ATTR_VOLUME_UUID = "volumeUuid"; private static final String ATTR_SDK_VERSION = "sdkVersion"; Loading Loading @@ -432,7 +433,12 @@ public final class Settings implements Watchable, Snappable { int databaseVersion; /** * Last known value of {@link Build#FINGERPRINT}. Used to determine when * Last known value of {@link Build#FINGERPRINT}. Stored for debug purposes. */ String buildFingerprint; /** * Last known value of {@link PackagePartitions#FINGERPRINT}. Used to determine when * an system update has occurred, meaning we need to clear code caches. */ String fingerprint; Loading @@ -444,6 +450,7 @@ public final class Settings implements Watchable, Snappable { public void forceCurrent() { sdkVersion = Build.VERSION.SDK_INT; databaseVersion = CURRENT_DATABASE_VERSION; buildFingerprint = Build.FINGERPRINT; fingerprint = PackagePartitions.FINGERPRINT; } } Loading Loading @@ -2495,6 +2502,8 @@ public final class Settings implements Watchable, Snappable { XmlUtils.writeStringAttribute(serializer, ATTR_VOLUME_UUID, volumeUuid); serializer.attributeInt(null, ATTR_SDK_VERSION, ver.sdkVersion); serializer.attributeInt(null, ATTR_DATABASE_VERSION, ver.databaseVersion); XmlUtils.writeStringAttribute(serializer, ATTR_BUILD_FINGERPRINT, ver.buildFingerprint); XmlUtils.writeStringAttribute(serializer, ATTR_FINGERPRINT, ver.fingerprint); serializer.endTag(null, TAG_VERSION); } Loading Loading @@ -3105,6 +3114,8 @@ public final class Settings implements Watchable, Snappable { internal.sdkVersion = parser.getAttributeInt(null, "internal", 0); external.sdkVersion = parser.getAttributeInt(null, "external", 0); internal.buildFingerprint = external.buildFingerprint = XmlUtils.readStringAttribute(parser, "buildFingerprint"); internal.fingerprint = external.fingerprint = XmlUtils.readStringAttribute(parser, "fingerprint"); Loading Loading @@ -3136,6 +3147,8 @@ public final class Settings implements Watchable, Snappable { final VersionInfo ver = findOrCreateVersion(volumeUuid); ver.sdkVersion = parser.getAttributeInt(null, ATTR_SDK_VERSION); ver.databaseVersion = parser.getAttributeInt(null, ATTR_DATABASE_VERSION); ver.buildFingerprint = XmlUtils.readStringAttribute(parser, ATTR_BUILD_FINGERPRINT); ver.fingerprint = XmlUtils.readStringAttribute(parser, ATTR_FINGERPRINT); } else if (tagName.equals(DomainVerificationPersistence.TAG_DOMAIN_VERIFICATIONS)) { mDomainVerificationManager.readSettings(computer, parser); Loading Loading @@ -4514,6 +4527,7 @@ public final class Settings implements Watchable, Snappable { pw.printPair("sdkVersion", ver.sdkVersion); pw.printPair("databaseVersion", ver.databaseVersion); pw.println(); pw.printPair("buildFingerprint", ver.buildFingerprint); pw.printPair("fingerprint", ver.fingerprint); pw.println(); pw.decreaseIndent(); Loading services/core/java/com/android/server/pm/StorageEventHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -208,7 +208,7 @@ public final class StorageEventHelper extends StorageEventListener { synchronized (mPm.mLock) { final boolean isUpgrade = !PackagePartitions.FINGERPRINT.equals(ver.fingerprint); if (isUpgrade) { logCriticalInfo(Log.INFO, "Build fingerprint changed from " + ver.fingerprint logCriticalInfo(Log.INFO, "Partitions fingerprint changed from " + ver.fingerprint + " to " + PackagePartitions.FINGERPRINT + "; regranting permissions for " + volumeUuid); } Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +9 −7 Original line number Diff line number Diff line Loading @@ -1724,8 +1724,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService } public PackageManagerService(PackageManagerServiceInjector injector, boolean factoryTest, final String buildFingerprint, final boolean isEngBuild, final boolean isUserDebugBuild, final int sdkVersion, final String incrementalVersion) { final String partitionsFingerprint, final boolean isEngBuild, final boolean isUserDebugBuild, final int sdkVersion, final String incrementalVersion) { mIsEngBuild = isEngBuild; mIsUserDebugBuild = isUserDebugBuild; mSdkVersion = sdkVersion; Loading Loading @@ -1971,10 +1971,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService final VersionInfo ver = mSettings.getInternalVersion(); mIsUpgrade = !buildFingerprint.equals(ver.fingerprint); !partitionsFingerprint.equals(ver.fingerprint); if (mIsUpgrade) { PackageManagerServiceUtils.logCriticalInfo(Log.INFO, "Upgrading from " + ver.fingerprint + " to " + PackagePartitions.FINGERPRINT); PackageManagerServiceUtils.logCriticalInfo(Log.INFO, "Upgrading from " + ver.fingerprint + " (" + ver.buildFingerprint + ") to " + PackagePartitions.FINGERPRINT + " (" + Build.FINGERPRINT + ")"); } mInitAppsHelper = new InitAppsHelper(this, mApexManager, mInstallPackageHelper, Loading Loading @@ -2081,14 +2082,14 @@ public class PackageManagerService implements PackageSender, TestUtilityService + ((SystemClock.uptimeMillis() - startTime) / 1000f) + " seconds"); // If the build fingerprint has changed since the last time we booted, // If the partitions fingerprint has changed since the last time we booted, // we need to re-grant app permission to catch any new ones that // appear. This is really a hack, and means that apps can in some // cases get permissions that the user didn't initially explicitly // allow... it would be nice to have some better way to handle // this situation. if (mIsUpgrade) { Slog.i(TAG, "Build fingerprint changed from " + ver.fingerprint + " to " Slog.i(TAG, "Partitions fingerprint changed from " + ver.fingerprint + " to " + PackagePartitions.FINGERPRINT + "; regranting permissions for internal storage"); } Loading Loading @@ -2120,6 +2121,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService | Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES); } } ver.buildFingerprint = Build.FINGERPRINT; ver.fingerprint = PackagePartitions.FINGERPRINT; } Loading
services/core/java/com/android/server/pm/Settings.java +15 −1 Original line number Diff line number Diff line Loading @@ -353,6 +353,7 @@ public final class Settings implements Watchable, Snappable { private static final String ATTR_SPLASH_SCREEN_THEME = "splash-screen-theme"; private static final String ATTR_PACKAGE_NAME = "packageName"; private static final String ATTR_BUILD_FINGERPRINT = "buildFingerprint"; private static final String ATTR_FINGERPRINT = "fingerprint"; private static final String ATTR_VOLUME_UUID = "volumeUuid"; private static final String ATTR_SDK_VERSION = "sdkVersion"; Loading Loading @@ -432,7 +433,12 @@ public final class Settings implements Watchable, Snappable { int databaseVersion; /** * Last known value of {@link Build#FINGERPRINT}. Used to determine when * Last known value of {@link Build#FINGERPRINT}. Stored for debug purposes. */ String buildFingerprint; /** * Last known value of {@link PackagePartitions#FINGERPRINT}. Used to determine when * an system update has occurred, meaning we need to clear code caches. */ String fingerprint; Loading @@ -444,6 +450,7 @@ public final class Settings implements Watchable, Snappable { public void forceCurrent() { sdkVersion = Build.VERSION.SDK_INT; databaseVersion = CURRENT_DATABASE_VERSION; buildFingerprint = Build.FINGERPRINT; fingerprint = PackagePartitions.FINGERPRINT; } } Loading Loading @@ -2495,6 +2502,8 @@ public final class Settings implements Watchable, Snappable { XmlUtils.writeStringAttribute(serializer, ATTR_VOLUME_UUID, volumeUuid); serializer.attributeInt(null, ATTR_SDK_VERSION, ver.sdkVersion); serializer.attributeInt(null, ATTR_DATABASE_VERSION, ver.databaseVersion); XmlUtils.writeStringAttribute(serializer, ATTR_BUILD_FINGERPRINT, ver.buildFingerprint); XmlUtils.writeStringAttribute(serializer, ATTR_FINGERPRINT, ver.fingerprint); serializer.endTag(null, TAG_VERSION); } Loading Loading @@ -3105,6 +3114,8 @@ public final class Settings implements Watchable, Snappable { internal.sdkVersion = parser.getAttributeInt(null, "internal", 0); external.sdkVersion = parser.getAttributeInt(null, "external", 0); internal.buildFingerprint = external.buildFingerprint = XmlUtils.readStringAttribute(parser, "buildFingerprint"); internal.fingerprint = external.fingerprint = XmlUtils.readStringAttribute(parser, "fingerprint"); Loading Loading @@ -3136,6 +3147,8 @@ public final class Settings implements Watchable, Snappable { final VersionInfo ver = findOrCreateVersion(volumeUuid); ver.sdkVersion = parser.getAttributeInt(null, ATTR_SDK_VERSION); ver.databaseVersion = parser.getAttributeInt(null, ATTR_DATABASE_VERSION); ver.buildFingerprint = XmlUtils.readStringAttribute(parser, ATTR_BUILD_FINGERPRINT); ver.fingerprint = XmlUtils.readStringAttribute(parser, ATTR_FINGERPRINT); } else if (tagName.equals(DomainVerificationPersistence.TAG_DOMAIN_VERIFICATIONS)) { mDomainVerificationManager.readSettings(computer, parser); Loading Loading @@ -4514,6 +4527,7 @@ public final class Settings implements Watchable, Snappable { pw.printPair("sdkVersion", ver.sdkVersion); pw.printPair("databaseVersion", ver.databaseVersion); pw.println(); pw.printPair("buildFingerprint", ver.buildFingerprint); pw.printPair("fingerprint", ver.fingerprint); pw.println(); pw.decreaseIndent(); Loading
services/core/java/com/android/server/pm/StorageEventHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -208,7 +208,7 @@ public final class StorageEventHelper extends StorageEventListener { synchronized (mPm.mLock) { final boolean isUpgrade = !PackagePartitions.FINGERPRINT.equals(ver.fingerprint); if (isUpgrade) { logCriticalInfo(Log.INFO, "Build fingerprint changed from " + ver.fingerprint logCriticalInfo(Log.INFO, "Partitions fingerprint changed from " + ver.fingerprint + " to " + PackagePartitions.FINGERPRINT + "; regranting permissions for " + volumeUuid); } Loading