Fixed the issue when some apps were gone and couldn't be installed

successfully after updating from KK to M via OTA.

There is more than one signature for some apps like Cortana. This app
which is installed in KK would be gone when updating from KK to M via OTA.
The reason for this is the unmatching signature, the error code is:
INSTALL_FAILED_UPDATE_INCOMPATIBLE.

Solution:
'databaseVersion' should not be assigned to CURRENT_DATABASE_VERSION
when creating a 'VersionInfo' instance, because it would affect the
process of ‘compareSignaturesCompat’ signature verification. We could
set the right value of 'databaseVersion' at an appropriate timing.

Signed-off-by: longhai <longhai@xiaomi.com>
This commit is contained in:
longhai
2016-01-29 14:22:22 +08:00
parent 26fdbc1833
commit bc62b218df

View File

@@ -1233,7 +1233,6 @@ final class Settings {
VersionInfo ver = mVersion.get(volumeUuid);
if (ver == null) {
ver = new VersionInfo();
ver.forceCurrent();
mVersion.put(volumeUuid, ver);
}
return ver;
@@ -2529,8 +2528,8 @@ final class Settings {
"No settings file; creating initial state");
// It's enough to just touch version details to create them
// with default values
findOrCreateVersion(StorageManager.UUID_PRIVATE_INTERNAL);
findOrCreateVersion(StorageManager.UUID_PRIMARY_PHYSICAL);
findOrCreateVersion(StorageManager.UUID_PRIVATE_INTERNAL).forceCurrent();
findOrCreateVersion(StorageManager.UUID_PRIMARY_PHYSICAL).forceCurrent();
return false;
}
str = new FileInputStream(mSettingsFilename);