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

Commit 34db5984 authored by Alex Buynytskyy's avatar Alex Buynytskyy Committed by Android (Google) Code Review
Browse files

Merge "Preserve build fingerprint for debug purposes."

parents d6a1e5cb 3196213b
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -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;
@@ -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,
@@ -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");
            }
@@ -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;
            }

+15 −1
Original line number Diff line number Diff line
@@ -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";
@@ -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;
@@ -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;
        }
    }
@@ -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);
            }
@@ -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");

@@ -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);
@@ -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();
+1 −1
Original line number Diff line number Diff line
@@ -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);
            }