|
|
|
@ -0,0 +1,239 @@
|
|
|
|
|
From c9d2c616f979b05ef609e5b8e890471b7b246beb Mon Sep 17 00:00:00 2001
|
|
|
|
|
From: dhacker29 <dhackerdvm@gmail.com>
|
|
|
|
|
Date: Tue, 24 Nov 2015 01:53:47 -0500
|
|
|
|
|
Subject: [PATCH 9/9] fw/b: Use ro.build.version.incremental to signal OTA
|
|
|
|
|
upgrades
|
|
|
|
|
|
|
|
|
|
Squash of:
|
|
|
|
|
|
|
|
|
|
Author: dhacker29 <dhackerdvm@gmail.com>
|
|
|
|
|
Date: Tue Nov 24 01:53:47 2015 -0500
|
|
|
|
|
Core: Use ro.build.date to signal mIsUpgrade
|
|
|
|
|
|
|
|
|
|
M: We use a static fingerprint that is only changed when a new OEM build is released, so
|
|
|
|
|
every flash shows Android is starting instead of upgrading. This will fix that.
|
|
|
|
|
N: even though we dont have the dexopt sceen on N, this is still needed to delete the
|
|
|
|
|
correct caches, and grant/deny specific runtime permissions like a true oem update
|
|
|
|
|
would do.
|
|
|
|
|
Updated for Nougat By: BeansTown106
|
|
|
|
|
|
|
|
|
|
Change-Id: I0e3ed5c8f0351e48944432ae6a0c5194ddeff1fa
|
|
|
|
|
|
|
|
|
|
Author: Sam Mortimer <sam@mortimer.me.uk>
|
|
|
|
|
Date: Fri Sep 28 13:45:00 2018 -0700
|
|
|
|
|
fw/b UserManagerService: Use ro.build.date to signal upgrades
|
|
|
|
|
|
|
|
|
|
*) We changed PackageManagerService to use Build.DATE instead of
|
|
|
|
|
Build.FINGERPRINT to detect upgrade. Do the same for
|
|
|
|
|
UserManagerService.
|
|
|
|
|
*) Affects generation of preboot intent and app data migration.
|
|
|
|
|
|
|
|
|
|
Change-Id: I56887b7ca842afdcf3cf84b27b4c04667cf43307
|
|
|
|
|
|
|
|
|
|
Author: Wang Han <416810799@qq.com>
|
|
|
|
|
Date: Sat Dec 29 23:33:20 2018 +0800
|
|
|
|
|
ShortcutService: Use ro.build.date to signal package scanning
|
|
|
|
|
|
|
|
|
|
* Affects system apps scanning.
|
|
|
|
|
|
|
|
|
|
Change-Id: I5f6d6647929f5b5ae7e820b18e95bf5ed2ec8d1c
|
|
|
|
|
|
|
|
|
|
Author: maxwen <max.weninger@gmail.com>
|
|
|
|
|
Date: Tue Nov 19 01:02:01 2019 +0100
|
|
|
|
|
base: Use ro.build.date to clear cache dirs on update
|
|
|
|
|
|
|
|
|
|
instead of using ro.build.fingerprint we explictly need to use ro.build.date
|
|
|
|
|
|
|
|
|
|
Change-Id: Ib3e80e58eb8c9a21c108e9f5cd2dbdb7ada8e3a4
|
|
|
|
|
|
|
|
|
|
Author: maxwen <max.weninger@gmail.com>
|
|
|
|
|
Date: Wed Oct 28 07:07:10 2020 -0400
|
|
|
|
|
One more Build.FINGERPRINT to Build.DATE change
|
|
|
|
|
|
|
|
|
|
Change-Id: I13dbf3d7f6587d3fcd6591cc0f861b34b6d5561c
|
|
|
|
|
|
|
|
|
|
Change-Id: If0eb969ba509981f9209ffa37a949d9042ef4c2a
|
|
|
|
|
---
|
|
|
|
|
core/java/android/app/admin/SystemUpdateInfo.java | 4 ++--
|
|
|
|
|
.../com/android/server/am/UserController.java | 3 ++-
|
|
|
|
|
.../android/server/pm/PackageManagerService.java | 15 +++++++--------
|
|
|
|
|
.../core/java/com/android/server/pm/Settings.java | 4 ++--
|
|
|
|
|
.../com/android/server/pm/ShortcutService.java | 2 +-
|
|
|
|
|
.../com/android/server/pm/UserManagerService.java | 8 ++++----
|
|
|
|
|
6 files changed, 18 insertions(+), 18 deletions(-)
|
|
|
|
|
|
|
|
|
|
diff --git a/core/java/android/app/admin/SystemUpdateInfo.java b/core/java/android/app/admin/SystemUpdateInfo.java
|
|
|
|
|
index 9e6c91f4ec31..7459b0e05e3a 100644
|
|
|
|
|
--- a/core/java/android/app/admin/SystemUpdateInfo.java
|
|
|
|
|
+++ b/core/java/android/app/admin/SystemUpdateInfo.java
|
|
|
|
|
@@ -133,7 +133,7 @@ public final class SystemUpdateInfo implements Parcelable {
|
|
|
|
|
out.startTag(null, tag);
|
|
|
|
|
out.attributeLong(null, ATTR_RECEIVED_TIME, mReceivedTime);
|
|
|
|
|
out.attributeInt(null, ATTR_SECURITY_PATCH_STATE, mSecurityPatchState);
|
|
|
|
|
- out.attribute(null, ATTR_ORIGINAL_BUILD , Build.FINGERPRINT);
|
|
|
|
|
+ out.attribute(null, ATTR_ORIGINAL_BUILD , Build.VERSION.INCREMENTAL);
|
|
|
|
|
out.endTag(null, tag);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -142,7 +142,7 @@ public final class SystemUpdateInfo implements Parcelable {
|
|
|
|
|
public static SystemUpdateInfo readFromXml(TypedXmlPullParser parser) {
|
|
|
|
|
// If an OTA has been applied (build fingerprint has changed), discard stale info.
|
|
|
|
|
final String buildFingerprint = parser.getAttributeValue(null, ATTR_ORIGINAL_BUILD );
|
|
|
|
|
- if (!Build.FINGERPRINT.equals(buildFingerprint)) {
|
|
|
|
|
+ if (!Build.VERSION.INCREMENTAL.equals(buildFingerprint)) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
|
|
|
|
|
index 76a994ec63e9..f8d1f8178871 100644
|
|
|
|
|
--- a/services/core/java/com/android/server/am/UserController.java
|
|
|
|
|
+++ b/services/core/java/com/android/server/am/UserController.java
|
|
|
|
|
@@ -90,6 +90,7 @@ import android.content.pm.UserInfo;
|
|
|
|
|
import android.content.pm.UserProperties;
|
|
|
|
|
import android.os.BatteryStats;
|
|
|
|
|
import android.os.Binder;
|
|
|
|
|
+import android.os.Build;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.os.Debug;
|
|
|
|
|
import android.os.Handler;
|
|
|
|
|
@@ -753,7 +754,7 @@ class UserController implements Handler.Callback {
|
|
|
|
|
// purposefully block sending BOOT_COMPLETED until after all
|
|
|
|
|
// PRE_BOOT receivers are finished to avoid ANR'ing apps
|
|
|
|
|
final UserInfo info = getUserInfo(userId);
|
|
|
|
|
- if (!Objects.equals(info.lastLoggedInFingerprint, PackagePartitions.FINGERPRINT)
|
|
|
|
|
+ if (!Objects.equals(info.lastLoggedInFingerprint, Build.VERSION.INCREMENTAL)
|
|
|
|
|
|| SystemProperties.getBoolean("persist.pm.mock-upgrade", false)) {
|
|
|
|
|
// Suppress double notifications for managed profiles that
|
|
|
|
|
// were unlocked automatically as part of their parent user being
|
|
|
|
|
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
|
|
|
index f2b62eaf25f8..c721e5474317 100644
|
|
|
|
|
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
|
|
|
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
|
|
|
|
@@ -1615,7 +1615,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PackageManagerService m = new PackageManagerService(injector, factoryTest,
|
|
|
|
|
- PackagePartitions.FINGERPRINT, Build.IS_ENG, Build.IS_USERDEBUG,
|
|
|
|
|
+ Build.VERSION.INCREMENTAL, Build.IS_ENG, Build.IS_USERDEBUG,
|
|
|
|
|
Build.VERSION.SDK_INT, Build.VERSION.INCREMENTAL);
|
|
|
|
|
t.traceEnd(); // "create package manager"
|
|
|
|
|
|
|
|
|
|
@@ -2082,9 +2082,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
|
|
|
mIsUpgrade =
|
|
|
|
|
!partitionsFingerprint.equals(ver.fingerprint);
|
|
|
|
|
if (mIsUpgrade) {
|
|
|
|
|
- PackageManagerServiceUtils.logCriticalInfo(Log.INFO,
|
|
|
|
|
- "Upgrading from " + ver.fingerprint + " (" + ver.buildFingerprint + ") to "
|
|
|
|
|
- + PackagePartitions.FINGERPRINT + " (" + Build.FINGERPRINT + ")");
|
|
|
|
|
+ PackageManagerServiceUtils.logCriticalInfo(Log.INFO, "Upgrading from "
|
|
|
|
|
+ + ver.fingerprint + " to " + Build.VERSION.INCREMENTAL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mInitAppsHelper = new InitAppsHelper(this, mApexManager, mInstallPackageHelper,
|
|
|
|
|
@@ -2221,8 +2220,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
|
|
|
// allow... it would be nice to have some better way to handle
|
|
|
|
|
// this situation.
|
|
|
|
|
if (mIsUpgrade) {
|
|
|
|
|
- Slog.i(TAG, "Partitions fingerprint changed from " + ver.fingerprint + " to "
|
|
|
|
|
- + PackagePartitions.FINGERPRINT
|
|
|
|
|
+ Slog.i(TAG, "Build incremental version changed from " + ver.fingerprint + " to "
|
|
|
|
|
+ + Build.VERSION.INCREMENTAL
|
|
|
|
|
+ "; regranting permissions for internal storage");
|
|
|
|
|
}
|
|
|
|
|
mPermissionManager.onStorageVolumeMounted(
|
|
|
|
|
@@ -2242,7 +2241,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
|
|
|
// across OTAs and are used to drive profile verification (post OTA) and
|
|
|
|
|
// profile compilation (without waiting to collect a fresh set of profiles).
|
|
|
|
|
if (mIsUpgrade) {
|
|
|
|
|
- Slog.i(TAG, "Build fingerprint changed; clearing code caches");
|
|
|
|
|
+ Slog.i(TAG, "Build incremental version changed; clearing code caches");
|
|
|
|
|
for (int i = 0; i < packageSettings.size(); i++) {
|
|
|
|
|
final PackageSetting ps = packageSettings.valueAt(i);
|
|
|
|
|
if (Objects.equals(StorageManager.UUID_PRIVATE_INTERNAL, ps.getVolumeUuid())) {
|
|
|
|
|
@@ -2254,7 +2253,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ver.buildFingerprint = Build.FINGERPRINT;
|
|
|
|
|
- ver.fingerprint = PackagePartitions.FINGERPRINT;
|
|
|
|
|
+ ver.fingerprint = Build.VERSION.INCREMENTAL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Defer the app data fixup until we are done with app data clearing above.
|
|
|
|
|
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
|
|
|
|
|
index aaf13ebeff2a..8fc6492ae873 100644
|
|
|
|
|
--- a/services/core/java/com/android/server/pm/Settings.java
|
|
|
|
|
+++ b/services/core/java/com/android/server/pm/Settings.java
|
|
|
|
|
@@ -464,7 +464,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
|
|
|
|
|
sdkVersion = Build.VERSION.SDK_INT;
|
|
|
|
|
databaseVersion = CURRENT_DATABASE_VERSION;
|
|
|
|
|
buildFingerprint = Build.FINGERPRINT;
|
|
|
|
|
- fingerprint = PackagePartitions.FINGERPRINT;
|
|
|
|
|
+ fingerprint = Build.VERSION.INCREMENTAL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -5692,7 +5692,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getExtendedFingerprint(long version) {
|
|
|
|
|
- return PackagePartitions.FINGERPRINT + "?pc_version=" + version;
|
|
|
|
|
+ return Build.VERSION.INCREMENTAL + "?pc_version=" + version;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static long uniformRandom(double low, double high) {
|
|
|
|
|
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
|
|
|
|
|
index 5b3514c01f9f..265125987be1 100644
|
|
|
|
|
--- a/services/core/java/com/android/server/pm/ShortcutService.java
|
|
|
|
|
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
|
|
|
|
|
@@ -5175,7 +5175,7 @@ public class ShortcutService extends IShortcutService.Stub {
|
|
|
|
|
|
|
|
|
|
// Injection point.
|
|
|
|
|
String injectBuildFingerprint() {
|
|
|
|
|
- return Build.FINGERPRINT;
|
|
|
|
|
+ return Build.VERSION.INCREMENTAL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final void wtf(String message) {
|
|
|
|
|
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
|
|
|
|
|
index 7e88e13e1788..9d8ace530d26 100644
|
|
|
|
|
--- a/services/core/java/com/android/server/pm/UserManagerService.java
|
|
|
|
|
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
|
|
|
|
|
@@ -4876,7 +4876,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|
|
|
|
userInfo.creationTime = getCreationTime();
|
|
|
|
|
userInfo.partial = true;
|
|
|
|
|
userInfo.preCreated = preCreate;
|
|
|
|
|
- userInfo.lastLoggedInFingerprint = PackagePartitions.FINGERPRINT;
|
|
|
|
|
+ userInfo.lastLoggedInFingerprint = Build.VERSION.INCREMENTAL;
|
|
|
|
|
if (userTypeDetails.hasBadge() && parentId != UserHandle.USER_NULL) {
|
|
|
|
|
userInfo.profileBadge = getFreeProfileBadgeLU(parentId, userType);
|
|
|
|
|
}
|
|
|
|
|
@@ -6200,7 +6200,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|
|
|
|
t.traceBegin("onBeforeStartUser-" + userId);
|
|
|
|
|
final int userSerial = userInfo.serialNumber;
|
|
|
|
|
// Migrate only if build fingerprints mismatch
|
|
|
|
|
- boolean migrateAppsData = !PackagePartitions.FINGERPRINT.equals(
|
|
|
|
|
+ boolean migrateAppsData = !Build.VERSION.INCREMENTAL.equals(
|
|
|
|
|
userInfo.lastLoggedInFingerprint);
|
|
|
|
|
t.traceBegin("prepareUserData");
|
|
|
|
|
mUserDataPreparer.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_DE);
|
|
|
|
|
@@ -6231,7 +6231,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|
|
|
|
}
|
|
|
|
|
final int userSerial = userInfo.serialNumber;
|
|
|
|
|
// Migrate only if build fingerprints mismatch
|
|
|
|
|
- boolean migrateAppsData = !PackagePartitions.FINGERPRINT.equals(
|
|
|
|
|
+ boolean migrateAppsData = !Build.VERSION.INCREMENTAL.equals(
|
|
|
|
|
userInfo.lastLoggedInFingerprint);
|
|
|
|
|
|
|
|
|
|
final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
|
|
|
|
|
@@ -6276,7 +6276,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|
|
|
|
if (now > EPOCH_PLUS_30_YEARS) {
|
|
|
|
|
userData.info.lastLoggedInTime = now;
|
|
|
|
|
}
|
|
|
|
|
- userData.info.lastLoggedInFingerprint = PackagePartitions.FINGERPRINT;
|
|
|
|
|
+ userData.info.lastLoggedInFingerprint = Build.VERSION.INCREMENTAL;
|
|
|
|
|
scheduleWriteUser(userId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
--
|
|
|
|
|
2.41.0
|
|
|
|
|
|