在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 小时前
[Android] PeakFinder AR v4.8.89 (山峰全景识别+增强现实山峰查看器)
android·人工智能·智能手机·ar·工具·软件
researcher-Jiang3 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
alexhilton4 小时前
Kotlin DSL深度解析:从Gradle脚本到构建你自己的DSL
android·kotlin·android jetpack
烽火聊员4 小时前
查看Android Studio错误日志
android·ide·android studio
星空语9 小时前
音频001_Android+Linux车载/手机音频全链路分层架构图
android·linux·音视频
CyL_Cly10 小时前
解决官网下载慢!Android Studio 最新版网盘下载
android·ide·android studio
智塑未来10 小时前
鸿蒙系统对比安卓、iOS,核心优势是什么?
android·ios·harmonyos
AI刀刀10 小时前
豆包智能体对话导出后,如何构建长期归档与高效检索体系?
android·人工智能·word·excel·ai导出鸭
初雪云11 小时前
iOS 上架入门:证书、描述文件、IPA 上传到底是什么关系?
android·ios·自动化·产品经理·iphone
玩机达人8814 小时前
一加12/Ace5/Ace3pro手机ColorOS16降级回锁BL熔断变黑砖怎么办
android·智能手机·电脑