From a32632e0e6d3b343d9bdf40dda699240c89062a1 Mon Sep 17 00:00:00 2001 From: Sooraj S Date: Tue, 18 Aug 2020 17:34:08 +0530 Subject: [PATCH 1/2] Updater: check maintenance version --- src/org/lineageos/updater/misc/Utils.java | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/org/lineageos/updater/misc/Utils.java b/src/org/lineageos/updater/misc/Utils.java index d8022ac8..d9cc8dff 100644 --- a/src/org/lineageos/updater/misc/Utils.java +++ b/src/org/lineageos/updater/misc/Utils.java @@ -101,12 +101,14 @@ public class Utils { int[] updateVersionParts = parseSemVer(update.getVersion()); int updateMajorVersion = updateVersionParts[0]; int updateMinorVersion = updateVersionParts[1]; - Log.d(TAG, "Update : Major "+updateMajorVersion +" Minor "+ updateMinorVersion ); + int updateMaintenanceVersion = updateVersionParts[2]; + Log.d(TAG, "Update : Major "+updateMajorVersion +" Minor "+ updateMinorVersion +" Maintenance " + updateMaintenanceVersion); int[] deviceVersionParts = parseSemVer(SystemProperties.get(Constants.PROP_BUILD_VERSION)); int deviceMajorVersion = deviceVersionParts[0]; int deviceMinorVersion = deviceVersionParts[1]; - Log.d(TAG, "Device : Major "+ deviceMajorVersion +" Minor "+ deviceMinorVersion ); + int deviceMaintenanceVersion = deviceVersionParts[2]; + Log.d(TAG, "Device : Major "+ deviceMajorVersion +" Minor "+ deviceMinorVersion + " Maintenance " + deviceMaintenanceVersion); if (!SystemProperties.getBoolean(Constants.PROP_UPDATER_ALLOW_DOWNGRADING, false) && @@ -126,10 +128,18 @@ public class Utils { Log.d(TAG, update.getName() + " is Older to current Major version"); return false; } + if(updateMinorVersion > deviceMinorVersion){ + Log.d(TAG, update.getName() + " is Newer to current Minor version"); + return true; + } if(updateMinorVersion < deviceMinorVersion){ Log.d(TAG, update.getName() + " is Older to current Minor version"); return false; } + if(updateMaintenanceVersion < deviceMaintenanceVersion){ + Log.d(TAG, update.getName() + " is Older to current Minor version"); + return false; + } return true; } @@ -138,7 +148,12 @@ public class Utils { String[] versionParts = versionCode.split(Pattern.quote(".")); int major = Integer.parseInt(versionParts[0]); int minor = Integer.parseInt(versionParts[1]); - return new int[]{ major, minor }; + int maintenance = 0; + if (versionParts.length == 3 ){ + maintenance = Integer.parseInt(versionParts[2]); + return new int[]{ major, minor ,maintenance}; + } + return new int[]{ major, minor ,maintenance}; } public static boolean canInstall(UpdateBaseInfo update) { -- GitLab From 5af8fdcfbc28d9b01a264e60457f518fe94c9264 Mon Sep 17 00:00:00 2001 From: Sooraj S Date: Fri, 21 Aug 2020 12:37:30 +0530 Subject: [PATCH 2/2] Updater: Parse android_version from JSON response We need to compare android version before adding the file to Updates --- src/org/lineageos/updater/misc/BuildInfoUtils.java | 4 ++++ src/org/lineageos/updater/misc/Constants.java | 1 + src/org/lineageos/updater/misc/Utils.java | 7 ++++++- src/org/lineageos/updater/model/UpdateBase.java | 11 +++++++++++ src/org/lineageos/updater/model/UpdateBaseInfo.java | 2 ++ 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/org/lineageos/updater/misc/BuildInfoUtils.java b/src/org/lineageos/updater/misc/BuildInfoUtils.java index 6a647faf..c01e26ca 100644 --- a/src/org/lineageos/updater/misc/BuildInfoUtils.java +++ b/src/org/lineageos/updater/misc/BuildInfoUtils.java @@ -33,4 +33,8 @@ public final class BuildInfoUtils { public static String getDisplayVersion() { return SystemProperties.get(Constants.PROP_BUILD_DISPLAY_VERSION); } + + public static String getReleaseVersion() { + return SystemProperties.get(Constants.PROP_BUILD_RELEASE_VERSION); + } } diff --git a/src/org/lineageos/updater/misc/Constants.java b/src/org/lineageos/updater/misc/Constants.java index 6ba705c7..69e759c4 100644 --- a/src/org/lineageos/updater/misc/Constants.java +++ b/src/org/lineageos/updater/misc/Constants.java @@ -42,6 +42,7 @@ public final class Constants { public static final String PROP_BUILD_DATE = "ro.build.date.utc"; public static final String PROP_BUILD_VERSION = "ro.lineage.build.version"; public static final String PROP_BUILD_DISPLAY_VERSION = "ro.lineage.display.version"; + public static final String PROP_BUILD_RELEASE_VERSION = "ro.build.version.release"; public static final String PROP_BUILD_VERSION_INCREMENTAL = "ro.build.version.incremental"; public static final String PROP_DEVICE = "ro.lineage.device"; public static final String PROP_NEXT_DEVICE = "ro.updater.next_device"; diff --git a/src/org/lineageos/updater/misc/Utils.java b/src/org/lineageos/updater/misc/Utils.java index d9cc8dff..6cd7a60d 100644 --- a/src/org/lineageos/updater/misc/Utils.java +++ b/src/org/lineageos/updater/misc/Utils.java @@ -94,6 +94,7 @@ public class Utils { update.setDownloadUrl(object.getString("url")); update.setVersion(object.getString("version")); update.setDisplayVersion(object.getString("display_version")); + update.setReleaseVersion(object.getString("android_version")); return update; } @@ -120,6 +121,10 @@ public class Utils { Log.d(TAG, update.getName() + " has type " + update.getType()); return false; } + if (!update.getReleaseVersion().equals(SystemProperties.get(Constants.PROP_BUILD_RELEASE_VERSION))) { + Log.d(TAG, update.getName() + " android_version :" + update.getReleaseVersion()); + return false; + } if(updateMajorVersion > deviceMajorVersion){ Log.d(TAG, update.getName() + " is Newer to current Major version"); return true; @@ -137,7 +142,7 @@ public class Utils { return false; } if(updateMaintenanceVersion < deviceMaintenanceVersion){ - Log.d(TAG, update.getName() + " is Older to current Minor version"); + Log.d(TAG, update.getName() + " is Older to current Maintenance version"); return false; } diff --git a/src/org/lineageos/updater/model/UpdateBase.java b/src/org/lineageos/updater/model/UpdateBase.java index cfa2027e..f6a8c274 100644 --- a/src/org/lineageos/updater/model/UpdateBase.java +++ b/src/org/lineageos/updater/model/UpdateBase.java @@ -24,6 +24,7 @@ public class UpdateBase implements UpdateBaseInfo { private String mType; private String mVersion; private String mDisplayVersion; + private String mReleaseVersion; private long mFileSize; public UpdateBase() { @@ -37,6 +38,7 @@ public class UpdateBase implements UpdateBaseInfo { mType = update.getType(); mVersion = update.getVersion(); mDisplayVersion = update.getDisplayVersion(); + mReleaseVersion = update.getReleaseVersion(); mFileSize = update.getFileSize(); } @@ -94,6 +96,15 @@ public class UpdateBase implements UpdateBaseInfo { mDisplayVersion = displayVersion; } + @Override + public String getReleaseVersion() { + return mReleaseVersion; + } + + public void setReleaseVersion(String releaseVersion) { + mReleaseVersion = releaseVersion; + } + @Override public String getDownloadUrl() { return mDownloadUrl; diff --git a/src/org/lineageos/updater/model/UpdateBaseInfo.java b/src/org/lineageos/updater/model/UpdateBaseInfo.java index 2921e96f..813af096 100644 --- a/src/org/lineageos/updater/model/UpdateBaseInfo.java +++ b/src/org/lineageos/updater/model/UpdateBaseInfo.java @@ -28,6 +28,8 @@ public interface UpdateBaseInfo { String getDisplayVersion(); + String getReleaseVersion(); + String getDownloadUrl(); long getFileSize(); -- GitLab