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

Commit 3196213b authored by Alex Buynytskyy's avatar Alex Buynytskyy
Browse files

Preserve build fingerprint for debug purposes.

Useful to debug OS upgrades.
Plus make wording more precise - we are not using build fingerprints to
detect OS upgrades anymore.

Bug: 258090088
Test: presubmit
Change-Id: I13837b2b608442a34b452870337e42efbf56ff1d
parent 4575d900
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);
            }