From 88c1bf0737f1209c62a7e70a49263834d2104d47 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 20 Oct 2019 02:04:04 +0200 Subject: [PATCH] core/Build: ro.system when comparing fingerprint ro.build.fingerprint is dynamically generated by deriveFingerprint(), but its output does not match ro.{system,vendor}.build.fingerprint. Fixes: ====== E Build : Mismatched fingerprints; system reported \ Sony/aosp_f8331/kagura:10/QP1A.191005.007/eng.builde.20191020.005112:user/test-keys \ but vendor reported Sony/aosp_f8331/kagura:10/QP1A.191005.007/builder10200050:user/test-keys Example: ======== ro.system.build.fingerprint = Sony/aosp_f8331/kagura:10/QP1A.191005.007/builder10200050:user/test-keys ro.build.fingerprint = Sony/aosp_f8331/kagura:10/QP1A.191005.007/eng.builde.20191020.005112:user/test-keys The critical difference is that deriveFingerprint() inserts the value of "ro.build.version.incremental", while the actual fingerprint produced by build/make/core/Makefile is: BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE):\ $(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS) Where: BF_BUILD_NUMBER := $(BUILD_USERNAME)$$($(DATE_FROM_FILE) +%m%d%H%M) Fix: ==== Use ro.system.build.fingerprint instead, which will match ro.vendor.build.fingerprint. Test: ===== make otapackage, flash, boot, verify no warning message is shown in UI. Change-Id: Ie5e972047d7983b411004a3f0d67c4636a205162 Signed-off-by: Felix --- core/java/android/os/Build.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index f5426cd9203d3..47ec9e23fb32b 100755 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -1076,7 +1076,7 @@ public class Build { return result == 0; } - final String system = SystemProperties.get("ro.build.fingerprint"); + final String system = SystemProperties.get("ro.system.build.fingerprint"); final String vendor = SystemProperties.get("ro.vendor.build.fingerprint"); final String bootimage = SystemProperties.get("ro.bootimage.build.fingerprint"); final String requiredBootloader = SystemProperties.get("ro.build.expect.bootloader"); @@ -1085,7 +1085,7 @@ public class Build { final String currentRadio = SystemProperties.get("gsm.version.baseband"); if (TextUtils.isEmpty(system)) { - Slog.e(TAG, "Required ro.build.fingerprint is empty!"); + Slog.e(TAG, "Required ro.system.build.fingerprint is empty!"); return false; }