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

Commit 3accca05 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Add major version code to platform.

It turns the version code into almost a 64-bit integer, with the
new major part being the upper 32 bits.

The only tricky part about this is the backup manager, since it
stored 32-bit version codes in its backup data sets.  This is dealt
with by, when the major version code is not 0, writing MIN_INT as
the version code and following that by the full long version code,
which we can detect when reading.  Note that this makes backup sets
containing apps with major version codes incompatible with older
versions of the platform.

Bug: 64459786
Test: Added in Change-Id: Iab8a682b62103babd6c16a56b8dc1e97d7078658
Change-Id: Ibfffe235bbfcf358b3741abd3f7197fdb063d3f3
parent dc3a8c7f
Loading
Loading
Loading
Loading
+11 −3
Original line number Original line Diff line number Diff line
@@ -1470,6 +1470,8 @@ package android {
    field public static final int vendor = 16843751; // 0x10103e7
    field public static final int vendor = 16843751; // 0x10103e7
    field public static final int version = 16844057; // 0x1010519
    field public static final int version = 16844057; // 0x1010519
    field public static final int versionCode = 16843291; // 0x101021b
    field public static final int versionCode = 16843291; // 0x101021b
    field public static final int versionCodeMajor = 16844150; // 0x1010576
    field public static final int versionMajor = 16844151; // 0x1010577
    field public static final int versionName = 16843292; // 0x101021c
    field public static final int versionName = 16843292; // 0x101021c
    field public static final int verticalCorrection = 16843322; // 0x101023a
    field public static final int verticalCorrection = 16843322; // 0x101023a
    field public static final int verticalDivider = 16843054; // 0x101012e
    field public static final int verticalDivider = 16843054; // 0x101012e
@@ -6766,6 +6768,7 @@ package android.app.backup {
    method public void onFullBackup(android.app.backup.FullBackupDataOutput) throws java.io.IOException;
    method public void onFullBackup(android.app.backup.FullBackupDataOutput) throws java.io.IOException;
    method public void onQuotaExceeded(long, long);
    method public void onQuotaExceeded(long, long);
    method public abstract void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
    method public abstract void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
    method public void onRestore(android.app.backup.BackupDataInput, long, android.os.ParcelFileDescriptor) throws java.io.IOException;
    method public void onRestoreFile(android.os.ParcelFileDescriptor, long, java.io.File, int, long, long) throws java.io.IOException;
    method public void onRestoreFile(android.os.ParcelFileDescriptor, long, java.io.File, int, long, long) throws java.io.IOException;
    method public void onRestoreFinished();
    method public void onRestoreFinished();
    field public static final int TYPE_DIRECTORY = 2; // 0x2
    field public static final int TYPE_DIRECTORY = 2; // 0x2
@@ -10584,6 +10587,8 @@ package android.content.pm {
  public class PackageInfo implements android.os.Parcelable {
  public class PackageInfo implements android.os.Parcelable {
    ctor public PackageInfo();
    ctor public PackageInfo();
    method public int describeContents();
    method public int describeContents();
    method public long getLongVersionCode();
    method public void setLongVersionCode(long);
    method public void writeToParcel(android.os.Parcel, int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.content.pm.PackageInfo> CREATOR;
    field public static final android.os.Parcelable.Creator<android.content.pm.PackageInfo> CREATOR;
    field public static final int INSTALL_LOCATION_AUTO = 0; // 0x0
    field public static final int INSTALL_LOCATION_AUTO = 0; // 0x0
@@ -10613,7 +10618,7 @@ package android.content.pm {
    field public android.content.pm.Signature[] signatures;
    field public android.content.pm.Signature[] signatures;
    field public java.lang.String[] splitNames;
    field public java.lang.String[] splitNames;
    field public int[] splitRevisionCodes;
    field public int[] splitRevisionCodes;
    field public int versionCode;
    field public deprecated int versionCode;
    field public java.lang.String versionName;
    field public java.lang.String versionName;
  }
  }
@@ -11128,9 +11133,10 @@ package android.content.pm {
    method public int describeContents();
    method public int describeContents();
    method public android.content.pm.VersionedPackage getDeclaringPackage();
    method public android.content.pm.VersionedPackage getDeclaringPackage();
    method public java.util.List<android.content.pm.VersionedPackage> getDependentPackages();
    method public java.util.List<android.content.pm.VersionedPackage> getDependentPackages();
    method public long getLongVersion();
    method public java.lang.String getName();
    method public java.lang.String getName();
    method public int getType();
    method public int getType();
    method public int getVersion();
    method public deprecated int getVersion();
    method public void writeToParcel(android.os.Parcel, int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.content.pm.SharedLibraryInfo> CREATOR;
    field public static final android.os.Parcelable.Creator<android.content.pm.SharedLibraryInfo> CREATOR;
    field public static final int TYPE_BUILTIN = 0; // 0x0
    field public static final int TYPE_BUILTIN = 0; // 0x0
@@ -11224,9 +11230,11 @@ package android.content.pm {
  public final class VersionedPackage implements android.os.Parcelable {
  public final class VersionedPackage implements android.os.Parcelable {
    ctor public VersionedPackage(java.lang.String, int);
    ctor public VersionedPackage(java.lang.String, int);
    ctor public VersionedPackage(java.lang.String, long);
    method public int describeContents();
    method public int describeContents();
    method public long getLongVersionCode();
    method public java.lang.String getPackageName();
    method public java.lang.String getPackageName();
    method public int getVersionCode();
    method public deprecated int getVersionCode();
    method public void writeToParcel(android.os.Parcel, int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.content.pm.VersionedPackage> CREATOR;
    field public static final android.os.Parcelable.Creator<android.content.pm.VersionedPackage> CREATOR;
  }
  }
+5 −2
Original line number Original line Diff line number Diff line
@@ -409,8 +409,9 @@ package android.app.backup {
    field public static final java.lang.String EXTRA_LOG_CANCEL_ALL = "android.app.backup.extra.LOG_CANCEL_ALL";
    field public static final java.lang.String EXTRA_LOG_CANCEL_ALL = "android.app.backup.extra.LOG_CANCEL_ALL";
    field public static final java.lang.String EXTRA_LOG_EVENT_CATEGORY = "android.app.backup.extra.LOG_EVENT_CATEGORY";
    field public static final java.lang.String EXTRA_LOG_EVENT_CATEGORY = "android.app.backup.extra.LOG_EVENT_CATEGORY";
    field public static final java.lang.String EXTRA_LOG_EVENT_ID = "android.app.backup.extra.LOG_EVENT_ID";
    field public static final java.lang.String EXTRA_LOG_EVENT_ID = "android.app.backup.extra.LOG_EVENT_ID";
    field public static final java.lang.String EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_FULL_VERSION";
    field public static final java.lang.String EXTRA_LOG_EVENT_PACKAGE_NAME = "android.app.backup.extra.LOG_EVENT_PACKAGE_NAME";
    field public static final java.lang.String EXTRA_LOG_EVENT_PACKAGE_NAME = "android.app.backup.extra.LOG_EVENT_PACKAGE_NAME";
    field public static final java.lang.String EXTRA_LOG_EVENT_PACKAGE_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_VERSION";
    field public static final deprecated java.lang.String EXTRA_LOG_EVENT_PACKAGE_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_VERSION";
    field public static final java.lang.String EXTRA_LOG_EXCEPTION_FULL_BACKUP = "android.app.backup.extra.LOG_EXCEPTION_FULL_BACKUP";
    field public static final java.lang.String EXTRA_LOG_EXCEPTION_FULL_BACKUP = "android.app.backup.extra.LOG_EXCEPTION_FULL_BACKUP";
    field public static final java.lang.String EXTRA_LOG_ILLEGAL_KEY = "android.app.backup.extra.LOG_ILLEGAL_KEY";
    field public static final java.lang.String EXTRA_LOG_ILLEGAL_KEY = "android.app.backup.extra.LOG_ILLEGAL_KEY";
    field public static final java.lang.String EXTRA_LOG_MANIFEST_PACKAGE_NAME = "android.app.backup.extra.LOG_MANIFEST_PACKAGE_NAME";
    field public static final java.lang.String EXTRA_LOG_MANIFEST_PACKAGE_NAME = "android.app.backup.extra.LOG_MANIFEST_PACKAGE_NAME";
@@ -777,13 +778,15 @@ package android.content.pm {


  public final class InstantAppResolveInfo implements android.os.Parcelable {
  public final class InstantAppResolveInfo implements android.os.Parcelable {
    ctor public InstantAppResolveInfo(android.content.pm.InstantAppResolveInfo.InstantAppDigest, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>, int);
    ctor public InstantAppResolveInfo(android.content.pm.InstantAppResolveInfo.InstantAppDigest, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>, int);
    ctor public InstantAppResolveInfo(android.content.pm.InstantAppResolveInfo.InstantAppDigest, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>, long);
    ctor public InstantAppResolveInfo(java.lang.String, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>);
    ctor public InstantAppResolveInfo(java.lang.String, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>);
    method public int describeContents();
    method public int describeContents();
    method public byte[] getDigestBytes();
    method public byte[] getDigestBytes();
    method public int getDigestPrefix();
    method public int getDigestPrefix();
    method public java.util.List<android.content.pm.InstantAppIntentFilter> getIntentFilters();
    method public java.util.List<android.content.pm.InstantAppIntentFilter> getIntentFilters();
    method public long getLongVersionCode();
    method public java.lang.String getPackageName();
    method public java.lang.String getPackageName();
    method public int getVersionCode();
    method public deprecated int getVersionCode();
    method public void writeToParcel(android.os.Parcel, int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo> CREATOR;
    field public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo> CREATOR;
  }
  }
+2 −2
Original line number Original line Diff line number Diff line
@@ -551,7 +551,7 @@ status_t StatsService::cmd_dump_memory_info(FILE* out) {
    return NO_ERROR;
    return NO_ERROR;
}
}


Status StatsService::informAllUidData(const vector<int32_t>& uid, const vector<int32_t>& version,
Status StatsService::informAllUidData(const vector<int32_t>& uid, const vector<int64_t>& version,
                                      const vector<String16>& app) {
                                      const vector<String16>& app) {
    VLOG("StatsService::informAllUidData was called");
    VLOG("StatsService::informAllUidData was called");


@@ -566,7 +566,7 @@ Status StatsService::informAllUidData(const vector<int32_t>& uid, const vector<i
    return Status::ok();
    return Status::ok();
}
}


Status StatsService::informOnePackage(const String16& app, int32_t uid, int32_t version) {
Status StatsService::informOnePackage(const String16& app, int32_t uid, int64_t version) {
    VLOG("StatsService::informOnePackage was called");
    VLOG("StatsService::informOnePackage was called");


    if (IPCThreadState::self()->getCallingUid() != AID_SYSTEM) {
    if (IPCThreadState::self()->getCallingUid() != AID_SYSTEM) {
+2 −2
Original line number Original line Diff line number Diff line
@@ -54,9 +54,9 @@ public:
    virtual Status statsCompanionReady();
    virtual Status statsCompanionReady();
    virtual Status informAnomalyAlarmFired();
    virtual Status informAnomalyAlarmFired();
    virtual Status informPollAlarmFired();
    virtual Status informPollAlarmFired();
    virtual Status informAllUidData(const vector<int32_t>& uid, const vector<int32_t>& version,
    virtual Status informAllUidData(const vector<int32_t>& uid, const vector<int64_t>& version,
                                    const vector<String16>& app);
                                    const vector<String16>& app);
    virtual Status informOnePackage(const String16& app, int32_t uid, int32_t version);
    virtual Status informOnePackage(const String16& app, int32_t uid, int64_t version);
    virtual Status informOnePackageRemoved(const String16& app, int32_t uid);
    virtual Status informOnePackageRemoved(const String16& app, int32_t uid);
    virtual Status writeDataToDisk();
    virtual Status writeDataToDisk();


+2 −1
Original line number Original line Diff line number Diff line
@@ -51,7 +51,8 @@ public:
    void finish() override;
    void finish() override;


    // TODO: Implement this later.
    // TODO: Implement this later.
    virtual void notifyAppUpgrade(const string& apk, const int uid, const int version) override{};
    virtual void notifyAppUpgrade(const string& apk, const int uid, const int64_t version)
            override{};
    // TODO: Implement this later.
    // TODO: Implement this later.
    virtual void notifyAppRemoved(const string& apk, const int uid) override{};
    virtual void notifyAppRemoved(const string& apk, const int uid) override{};


Loading