summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authordhacker29 <dhackerdvm@gmail.com>2015-11-24 01:53:47 -0500
committeralk3pInjection <webmaster@raspii.tech>2022-05-02 09:56:20 +0800
commit693e3ed1302539128208cb98fa46a2f91f28b7ba (patch)
tree6d5d4a4efc4a48535fd96fe91a3e2ae4a4702c8e /services
parent153ce6844fdbc4acbdae3c607d1e1e96012fa7f2 (diff)
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
Diffstat (limited to 'services')
-rw-r--r--services/core/java/com/android/server/am/UserController.java2
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java24
-rw-r--r--services/core/java/com/android/server/pm/Settings.java6
-rw-r--r--services/core/java/com/android/server/pm/ShortcutService.java2
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java10
5 files changed, 24 insertions, 20 deletions
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index b28b1a66cd97..4187a1387f02 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -711,7 +711,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, Build.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
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 70ecaa7a458c..6b9ba1577dd4 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -7113,7 +7113,7 @@ public class PackageManagerService extends IPackageManager.Stub
}
PackageManagerService m = new PackageManagerService(injector, onlyCore, factoryTest,
- Build.FINGERPRINT, Build.IS_ENG, Build.IS_USERDEBUG, Build.VERSION.SDK_INT,
+ Build.VERSION.INCREMENTAL, Build.IS_ENG, Build.IS_USERDEBUG, Build.VERSION.SDK_INT,
Build.VERSION.INCREMENTAL);
t.traceEnd(); // "create package manager"
@@ -7608,7 +7608,7 @@ public class PackageManagerService extends IPackageManager.Stub
!buildFingerprint.equals(ver.fingerprint);
if (mIsUpgrade) {
PackageManagerServiceUtils.logCriticalInfo(Log.INFO,
- "Upgrading from " + ver.fingerprint + " to " + Build.FINGERPRINT);
+ "Upgrading from " + ver.fingerprint + " to " + Build.VERSION.INCREMENTAL);
}
// when upgrading from pre-M, promote system app permissions from install to runtime
@@ -7995,8 +7995,9 @@ public class PackageManagerService extends IPackageManager.Stub
// 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 "
- + Build.FINGERPRINT + "; regranting permissions for internal storage");
+ Slog.i(TAG, "Build incremental version changed from " + ver.fingerprint + " to "
+ + Build.VERSION.INCREMENTAL +
+ "; regranting permissions for internal storage");
}
mPermissionManager.onStorageVolumeMounted(
StorageManager.UUID_PRIVATE_INTERNAL, mIsUpgrade);
@@ -8068,7 +8069,7 @@ public class PackageManagerService extends IPackageManager.Stub
// 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 && !mOnlyCore) {
- 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.volumeUuid)) {
@@ -8079,7 +8080,7 @@ public class PackageManagerService extends IPackageManager.Stub
| Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES);
}
}
- ver.fingerprint = Build.FINGERPRINT;
+ ver.fingerprint = Build.VERSION.INCREMENTAL;
}
// Legacy existing (installed before Q) non-system apps to hide
@@ -8564,7 +8565,7 @@ public class PackageManagerService extends IPackageManager.Stub
// identify cached items. In particular, changing the value of certain
// feature flags should cause us to invalidate any caches.
final String cacheName = FORCE_PACKAGE_PARSED_CACHE_ENABLED ? "debug"
- : SystemProperties.digestOf("ro.build.fingerprint");
+ : SystemProperties.digestOf("ro.build.version.incremental");
// Reconcile cache directories, keeping only what we'd actually use.
for (File cacheDir : FileUtils.listFilesOrEmpty(cacheBaseDir)) {
@@ -25686,7 +25687,7 @@ public class PackageManagerService extends IPackageManager.Stub
Slog.w(TAG, "Failed to scan " + ps.getPath() + ": " + e.getMessage());
}
- if (!Build.FINGERPRINT.equals(ver.fingerprint)) {
+ if (!Build.VERSION.INCREMENTAL.equals(ver.fingerprint)) {
clearAppDataLIF(ps.pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE
| FLAG_STORAGE_EXTERNAL | Installer.FLAG_CLEAR_CODE_CACHE_ONLY
| Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES);
@@ -25724,10 +25725,11 @@ public class PackageManagerService extends IPackageManager.Stub
}
synchronized (mLock) {
- final boolean isUpgrade = !Build.FINGERPRINT.equals(ver.fingerprint);
+ final boolean isUpgrade = !Build.VERSION.INCREMENTAL.equals(ver.fingerprint);
if (isUpgrade) {
- logCriticalInfo(Log.INFO, "Build fingerprint changed from " + ver.fingerprint
- + " to " + Build.FINGERPRINT + "; regranting permissions for "
+ logCriticalInfo(Log.INFO, "Build incremental version changed from "
+ + ver.fingerprint
+ + " to " + Build.VERSION.INCREMENTAL + "; regranting permissions for "
+ volumeUuid);
}
mPermissionManager.onStorageVolumeMounted(volumeUuid, isUpgrade);
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 26aebbc1ea93..3bf3e1a1e3a3 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -433,7 +433,7 @@ public final class Settings implements Watchable, Snappable {
public void forceCurrent() {
sdkVersion = Build.VERSION.SDK_INT;
databaseVersion = CURRENT_DATABASE_VERSION;
- fingerprint = Build.FINGERPRINT;
+ fingerprint = Build.VERSION.INCREMENTAL;
}
}
@@ -2972,7 +2972,7 @@ public final class Settings implements Watchable, Snappable {
// on update drop the files before loading them.
if (PackageManagerService.CLEAR_RUNTIME_PERMISSIONS_ON_UPGRADE) {
final VersionInfo internal = getInternalVersion();
- if (!Build.FINGERPRINT.equals(internal.fingerprint)) {
+ if (!Build.VERSION.INCREMENTAL.equals(internal.fingerprint)) {
for (UserInfo user : users) {
mRuntimePermissionsPersistence.deleteUserRuntimePermissionsFile(user.id);
}
@@ -5346,7 +5346,7 @@ public final class Settings implements Watchable, Snappable {
}
private String getExtendedFingerprint(long version) {
- return Build.FINGERPRINT + "?pc_version=" + version;
+ return Build.VERSION.INCREMENTAL + "?pc_version=" + version;
}
public void writeStateForUserAsyncLPr(int userId) {
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index 62d6717e847a..4e9e7a026a90 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -5240,7 +5240,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 6d8137e74061..826370006dca 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -3657,7 +3657,7 @@ public class UserManagerService extends IUserManager.Stub {
userInfo.creationTime = getCreationTime();
userInfo.partial = true;
userInfo.preCreated = preCreate;
- userInfo.lastLoggedInFingerprint = Build.FINGERPRINT;
+ userInfo.lastLoggedInFingerprint = Build.VERSION.INCREMENTAL;
if (userTypeDetails.hasBadge() && parentId != UserHandle.USER_NULL) {
userInfo.profileBadge = getFreeProfileBadgeLU(parentId, userType);
}
@@ -4785,7 +4785,8 @@ public class UserManagerService extends IUserManager.Stub {
t.traceBegin("onBeforeStartUser-" + userId);
final int userSerial = userInfo.serialNumber;
// Migrate only if build fingerprints mismatch
- boolean migrateAppsData = !Build.FINGERPRINT.equals(userInfo.lastLoggedInFingerprint);
+ boolean migrateAppsData =
+ !Build.VERSION.INCREMENTAL.equals(userInfo.lastLoggedInFingerprint);
t.traceBegin("prepareUserData");
mUserDataPreparer.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_DE);
t.traceEnd();
@@ -4814,7 +4815,8 @@ public class UserManagerService extends IUserManager.Stub {
}
final int userSerial = userInfo.serialNumber;
// Migrate only if build fingerprints mismatch
- boolean migrateAppsData = !Build.FINGERPRINT.equals(userInfo.lastLoggedInFingerprint);
+ boolean migrateAppsData =
+ !Build.VERSION.INCREMENTAL.equals(userInfo.lastLoggedInFingerprint);
mUserDataPreparer.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_CE);
StorageManagerInternal smInternal = LocalServices.getService(StorageManagerInternal.class);
@@ -4851,7 +4853,7 @@ public class UserManagerService extends IUserManager.Stub {
if (now > EPOCH_PLUS_30_YEARS) {
userData.info.lastLoggedInTime = now;
}
- userData.info.lastLoggedInFingerprint = Build.FINGERPRINT;
+ userData.info.lastLoggedInFingerprint = Build.VERSION.INCREMENTAL;
scheduleWriteUser(userData);
}