在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文件中进行修改。

相关推荐
2501_9159090610 小时前
iOS 应用反调试技详解术 检测调试器的原理与防护实践
android·ios·小程序·https·uni-app·iphone·webview
Lvan的前端笔记11 小时前
AndroidX 完全入门指南
android·androidx
帅次11 小时前
Android 应用高级面试:Window 近1年高频追问 18 题
android·面试·职场和发展
总捣什么乱112 小时前
MySQL MySQL是怎么保证主备一致的?
android·mysql·adb
zzm62812 小时前
精读 HinDroid:基于异构信息网络的安卓恶意软件检测
android
weixin_4407841113 小时前
Android基础知识汇总
android·java·android studio
sbjdhjd13 小时前
安全初级 | Upload 文件上传漏洞实操
android·经验分享·安全·网络安全·开源·php·apache
small-pudding13 小时前
Cocos Creator Android 热更新方案实践:逻辑更新、远程 Bundle 与线上回滚
android
00后程序员张14 小时前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
yunsr14 小时前
PHP函数及漏洞防御
android·开发语言·php