在build/tools/buildinfo.sh中定义ro.build.fingerprint=$BUILD_FINGERPRINT.
然后在build/core/Makefile中给BUILD_FINGERPRINT赋值
但这里确定的是手机system/build.prop中的ro.build.fingerprint,是编译时决定的
getprop读取到的ro.build.fingerprint的值,是运行时决定的,在frameworks/base/core/java/android/os/Build.java 中:
923 /** A string that uniquely identifies this build. Do not attempt to parse this value. */
924 public static final String FINGERPRINT = deriveFingerprint();
925
926 /**
927 * Some devices split the fingerprint components between multiple
928 * partitions, so we might derive the fingerprint at runtime.
929 */
930 private static String deriveFingerprint() {
931 Stringfinger = SystemProperties.get("ro.build.fingerprint");
932 if (TextUtils.isEmpty(finger)) {
933 finger = getString("ro.product.brand") + '/' +
934 getString("ro.product.name") + '/' +
935 getString("ro.product.device") + ':' +
936 getString("ro.build.version.release") + '/' +
937 getString("ro.build.id") + '/' +
938 getString("ro.build.version.incremental") + ':' +
939 getString("ro.build.type") + '/' +
940 getString("ro.build.tags");
941 }
942 return finger;
943 }
fingprint定义需要按照如下格式:
$(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)
[ro.build.brand]/[ro.product.name]/[ro.product.device]:[ro.build.version.release]/[ro.build.id]/[ro.build.version.incremental]:[ro.build.type]/[ro.build.tags]
属性变量 属性值 说明
$(PRODUCT_BRAND) ro.build.brand 客户名
TARGET_PRODUCT ro.product.name 产品名
TARGET_DEVICE ro.product.device 设备名
PLATFORM_VERSION ro.build.version.release 安卓版本
BUILD_ID ro.build.id 不知道??
BF_BUILD_NUMBER ro.build.version.incremental 编译日期相关,每次版本都变
TARGET_BUILD_VARIANT ro.build.type user&userdebug
(BUILD_VERSION_TAGS ro.build.tags 一般release-keys,不知道是说明东西
例如:
Mobicel/X4/X4:9/PPR1.180610.011/K210_MAS_08:userdebug/release-keys
Fingprint里面的属性不能存在空格
以下是CTS检查Fingerprint
android.os.cts.BuildVersionTest
-- testBuildFingerprint
public static class Build{
public static String BOARD="";
public static String BRAND="";
public static String ID="";
public static String HOST="";
public static String DEVICE="";
public static String HARDWARE="";
public static String MANUFACTURER="";
public static String SERIAL="";
public static String MODEL="";
public static String TYPE="";
public static String PRODUCT="";
public static String USER="";
public static String TAGS="";
}
满足下面的正则表达式
private static final Pattern BOARD_PATTERN =
Pattern.compile("^([0-9A-Za-z._-]+)$");
mtk online有以下描述
[DESCRIPTION]
android.os.cts.BuildVersionTest
–testBuildFingerprint
customization : [ro.build.brand]/[ro.product.name]/[ro.product.device]:[ro.build.version.release]/[ro.build.id]/[ro.build.version.incremental]:[ro.build.type]/[ro.build.tags]
[Analysis]
–the ro.product.name and ro.build.fingerprint
•fingerprint should in the format of
–=>[ro.build.brand]/[ro.product.name]/[ro.product.device]:[ro.build.version.release]/[ro.build.id]/[ro.build.version.incremental]:[ro.build.type]/[ro.build.tags]
–The length for fingerprint should be less than 91 characters
[SOLUTION]
Method 1:
Modify buildinfo.sh,
echo “ro.build.fingerprint=$BUILD_FINGERPRINT”
delete $BUILD_FINGERPRINT,modify the strings as you want,
you must follow the formart:
–=>[ro.build.brand]/[ro.product.name]/[ro.product.device]:[ro.build.version.release]/[ro.build.id]/[ro.build.version.incremental]:[ro.build.type]/[ro.build.tags]
Method 2:
Modify $BUILD_FINGERPRINT in build\core\Makefile
you can Refer to the FAQ:
FAQ ID: FAQ03066
Settings中About Phone的Model number等信息的修改