diff options
| -rw-r--r-- | core/java/android/os/Build.java | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index 4bad7ab76be6..a2fb9db8c64b 100644 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -807,8 +807,20 @@ public class Build { } /** - * Verifies the the current flash of the device is consistent with what + * True if Treble is enabled and required for this device. + * + * @hide + */ + public static final boolean IS_TREBLE_ENABLED = + SystemProperties.getBoolean("ro.treble.enabled", false); + + /** + * Verifies the current flash of the device is consistent with what * was expected at build time. + * + * Treble devices will verify the Vendor Interface (VINTF). A device + * launched without Treble: + * * 1) Checks that device fingerprint is defined and that it matches across * various partitions. * 2) Verifies radio and bootloader partitions are those expected in the build. @@ -819,6 +831,17 @@ public class Build { // Don't care on eng builds. Incremental build may trigger false negative. if (IS_ENG) return true; + if (IS_TREBLE_ENABLED) { + int result = VintfObject.verify(new String[0]); + + if (result != 0) { + Slog.e(TAG, "Vendor interface is incompatible, error=" + + String.valueOf(result)); + } + + return result == 0; + } + final String system = SystemProperties.get("ro.build.fingerprint"); final String vendor = SystemProperties.get("ro.vendor.build.fingerprint"); final String bootimage = SystemProperties.get("ro.bootimage.build.fingerprint"); |