Rework platform version to hide codenames.

The public platform version no longer can be a codename, it is
always the most recently released platform.  A new build property
and API provides either the offical version or the current codename
as appropriate.  This will avoid breaking apps that look at the
platform version while development is under a codename.

Bug:  143175463
Test: manual
Change-Id: I72975ec86ac07700dc9052245b54411fa77982b8
This commit is contained in:
Dianne Hackborn
2019-10-28 16:34:22 -07:00
parent cf6db59102
commit a2fe812ea0
8 changed files with 14 additions and 6 deletions

View File

@@ -1735,7 +1735,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
e.writeString(Build.BRAND);
e.writeString(Build.PRODUCT);
e.writeString(Build.DEVICE);
e.writeString(Build.VERSION.RELEASE);
e.writeString(Build.VERSION.RELEASE_OR_CODENAME);
e.writeString(Build.ID);
e.writeString(Build.VERSION.INCREMENTAL);
e.writeString(Build.TYPE);

View File

@@ -34389,6 +34389,7 @@ package android.os {
field public static final String INCREMENTAL;
field public static final int PREVIEW_SDK_INT;
field public static final String RELEASE;
field @NonNull public static final String RELEASE_OR_CODENAME;
field @Deprecated public static final String SDK;
field public static final int SDK_INT;
field public static final String SECURITY_PATCH;

View File

@@ -238,6 +238,13 @@ public class Build {
*/
public static final String RELEASE = getString("ro.build.version.release");
/**
* The version string we show to the user; may be {@link #RELEASE} or
* {@link #CODENAME} if not a final release build.
*/
@NonNull public static final String RELEASE_OR_CODENAME = getString(
"ro.build.version.release_or_codename");
/**
* The base OS build the product is based on.
*/

View File

@@ -277,7 +277,7 @@ public class RuntimeInit {
result.append(System.getProperty("java.vm.version")); // such as 1.1.0
result.append(" (Linux; U; Android ");
String version = Build.VERSION.RELEASE; // "1.0" or "3.4b5"
String version = Build.VERSION.RELEASE_OR_CODENAME; // "1.0" or "3.4b5"
result.append(version.length() > 0 ? version : "1.0");
// add the model for the release build

View File

@@ -60,7 +60,7 @@ public class BuildTest extends TestCase {
assertNotEmpty("BRAND", Build.BRAND);
assertNotEmpty("MODEL", Build.MODEL);
assertNotEmpty("VERSION.INCREMENTAL", Build.VERSION.INCREMENTAL);
assertNotEmpty("VERSION.RELEASE", Build.VERSION.RELEASE);
assertNotEmpty("VERSION.RELEASE", Build.VERSION.RELEASE_OR_CODENAME);
assertNotEmpty("TYPE", Build.TYPE);
Assert.assertNotNull("TAGS", Build.TAGS); // TAGS is allowed to be empty.
assertNotEmpty("FINGERPRINT", Build.FINGERPRINT);

View File

@@ -169,7 +169,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
if (DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext)) {
v.setText(mContext.getString(
com.android.internal.R.string.bugreport_status,
Build.VERSION.RELEASE,
Build.VERSION.RELEASE_OR_CODENAME,
Build.ID));
v.setVisibility(View.VISIBLE);
} else {

View File

@@ -158,7 +158,7 @@ public class DemoModeFragment extends PreferenceFragment implements OnPreference
String demoTime = "1010"; // 10:10, a classic choice of horologists
try {
String[] versionParts = android.os.Build.VERSION.RELEASE.split("\\.");
String[] versionParts = android.os.Build.VERSION.RELEASE_OR_CODENAME.split("\\.");
int majorVersion = Integer.valueOf(versionParts[0]);
demoTime = String.format("%02d00", majorVersion % 24);
} catch (IllegalArgumentException ex) {

View File

@@ -403,7 +403,7 @@ class LegacyGlobalActions implements DialogInterface.OnDismissListener, DialogIn
public String getStatus() {
return mContext.getString(
com.android.internal.R.string.bugreport_status,
Build.VERSION.RELEASE,
Build.VERSION.RELEASE_OR_CODENAME,
Build.ID);
}
}