在Android 9上修改build.fingerprint

一.build.fingerprint

build.fingerprint是 Android 系统中的一个属性,它用于提供设备的唯一标识。这个属性的值由设备的硬件和软件信息组成,是由设备的多个信息拼接而成的,包括但不限于制造商、设备型号、Android 版本号等。

build.fingerprint的值通常是在存储在build.prop文件中的,通常在Android设备中的/system目录下,编译完成后一般在out/target/product/产品名/的层级目录下。

build.prop文件一般用来存储设备的基本信息,这些信息一般是制造厂商,还有设备名称等,这些用于设备的识别和兼容性 ,在构建成功的代码中,在out/target/product/产品名/system或out/target/product/产品名/vendor(该目录是厂商的私有代码目录)下都有build.prop文件,在这些文件中必须保持 build.prop文件的内容信息一致,才能保证设备和谷歌 的一系列认证都没有问题。除此之外,该文件还包含了很多定义的系统属性,如屏幕密度等等。

二.如何修改build.fingerprint

build.fingerprint一般是从build_fingerprint.txt文件 中拿到的值,如果只是修改build.fingerprint的值的话,每次修改后查看build_fingerprint.txt文件即可。如果要修改其他属性的值则需要查看build.prop文件,一般前两行会给出注释,注释中会写清楚这些属性值来源与哪个文件。

在Android 9上,build.prop的内容一般会先从/build/make/tools/buildinfo.sh 中获取,然后再从build/mtk(芯片厂商这里以mtk为例)/产品名/system.prop中获 取,最后获取ADDITIONAL_BUILD_PROPERTIES 变量的值,需注意这个变量的值是在build/make/core/main.mk中追加的。

所以修改build.fingerprint可以从buildinfo.sh中修改。

查看buildinfo.sh文件的内容:

bash 复制代码
echo "# Do not try to parse description, fingerprint, or thumbprint"
echo "ro.build.description=$PRIVATE_BUILD_DESC"
echo "ro.build.fingerprint=$BUILD_FINGERPRINT"
if [ -n "$BUILD_THUMBPRINT" ] ; then
  echo "ro.build.thumbprint=$BUILD_THUMBPRINT"
fi
echo "ro.build.characteristics=$TARGET_AAPT_CHARACTERISTICS"

发现build.fingerprint的值是从BUILD_FINGERPRINT变量中赋值过来的,该值位于Makefile文档中。

题外话:如果想修改ro.product.model等变量的值,可以直接在buildinfo.sh文件中修改。

举例:

bash 复制代码
echo "ro.build.tags=你想要的值"
echo "ro.build.flavor=你想要的值"
 if [ -n "$BOARD_BUILD_SYSTEM_ROOT_IMAGE" ] ; then
 echo "ro.build.system_root_image=你想要的值"
 fi
 if [ -n "$AB_OTA_UPDATER" ] ; then
 echo "ro.build.ab_update=你想要的值"
 fi
 echo "ro.product.model=你想要的值"
 echo "ro.product.brand=你想要的值"
 echo "ro.product.name=你想要的值"
 echo "ro.product.device=你想要的值"

所以只需要修改Makefile文件中的BUILD_FINGERPRINT的值即可。代码如下:

makefile 复制代码
# The string used to uniquely identify the combined build and product; used by the OTA server.
# 判断BUILD_FINGERPRINT是否为空
# 如果是则执行下一句
# strip函数用于去除变量的前导和尾随空格
ifeq (,$(strip $(BUILD_FINGERPRINT)))
  # 判断HAS_BUILD_NUMBER是否为FALSE,一般都是FALSE
  # 可查看make/core/version_defaults.mk文件
  ifeq ($(strip $(HAS_BUILD_NUMBER)),false)
    BF_BUILD_NUMBER := $(USER)$$($(DATE_FROM_FILE) +%m%d%H%M)
  else
    BF_BUILD_NUMBER := $(file <$(BUILD_NUMBER_FILE))
  endif
  BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)
endif
# unset it for safety.
BF_BUILD_NUMBER :=

可以看到BUILD_FINGERPRINT是由多个变量的值组成的,如果想修改直接改为自己想要的值即可。

javascript 复制代码
BUILD_FINGERPRINT := $(你想要的值)/$(你想要的值)/$(你想要的值):$(你想要的值)/$(你想要的值)/$(你想要的值):$(你想要的值)/$(你想要的值)

总得来说,在A9上修改相关的设备信息值,多半都是在Makefile、main.mk和buildinfo.sh文件中进行修改。

相关推荐
帅次2 小时前
Compose 入门:@Composable、组合与重组
android·kotlin·gradle·android jetpack·compose·composable
洞见前行2 小时前
APK Signing Block V2 多渠道分包技术原理
android
DandelionR2 小时前
Android SDK安装
android
雪铃儿2 小时前
Flutter Android 热更新:我为什么没用 Shorebird 而是自己造了一个🚀
android·开源
angerdream3 小时前
Android手把手编写儿童手机远程监控App之通知栏消息
android
OCN_Yang4 小时前
能告诉我:你为什么用 MVI 吗?反正我不理解!
android·架构·前端框架
荣月灵的小梅花5 小时前
Android 给广播接收器增加权限(permission)或signature签名权限
android
沐言人生6 小时前
ReactNative 源码分析4——ReactActivity之加载JSBundle
android·react native
砖厂小工8 小时前
Now In Android 精讲 10 - AGENTS.md:写给 AI Agent 的项目说明书
android