ThanksView
|
在Android系统中有几个版本号经常遇到,有时还要做特殊处理。下面整理一下,这些都保留在文件系统的/system/build.prop文件里,build.prop相当于Windows下的注册表,这个文件内定义了系统初始(或永久)的一些参数属性、功能的开放等。
下面的代码均是基于Android8.1分析。 系统设置--关于手机--版本号 1、在系统设置代码中搜索“版本号”,AndroidStudio中全局搜索快捷键“Ctrl+Shift+f”。 <string name="build_number" msgid="3075795840572241758">"版本号"</string> 全局搜索“build_number”,找到com.android.settings.deviceinfo.BuildNumberPreferenceController类。 private static final String KEY_BUILD_NUMBER = "build_number";
public void displayPreference(PreferenceScreen screen) {
此时关键就是找到Build.DISPLAY。 这里是定义在android.os.Build类中,该类位于frameworks/base/core/java目录下,如下: /** A build ID string meant for displaying to the user */public static final String DISPLAY = getString("ro.build.display.id"); private static String getString(String property) { return SystemProperties.get(property, UNKNOWN); }
我们看到了DISPLAY是Build类中的静态变量,表示“ro.build.display.id”的属性值。 echo "ro.build.display.id=$BUILD_DISPLAY_ID" 我们继续在build目录下,搜索“BUILD_DISPLAY_ID”,命令:grep -r "BUILD_DISPLAY_ID"。在文件build/make/core/MakeFile中搜索出:
BUILD_ID 定义在build/make/core/build_id.mk中,如下:
BUILD_NUMBER_FROM_FILE := $$(cat $(OUT_DIR)/build_number.txt)
这里OUT_DIR就是out目录, build_number.txt就是在out目录下生成的一个文件,内容如下: eng.sgf.20180421.152052这里是eng版本。 BUILD_KEYS定义在build/make/core/MakeFile中,表示系统签名,test-keys只适用于开发阶段。如下: # The "test-keys" tag marks builds signed with the old test keys, # which are available in the SDK. "dev-keys" marks builds signed with # non-default dev keys (usually private keys from a vendor directory). # Both of these tags will be removed and replaced with "release-keys" # when the target-files is signed in a post-build step. ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/testkey) BUILD_KEYS := test-keys else BUILD_KEYS := dev-keys endif 如果不是user版本,BUILD_DISPLAY_ID的取值就是$(build_desc) # A human-readable string that descibes this build in detail. build_desc := $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT) $(PLATFORM_VERSION) $(BUILD_ID) $(BUILD_NUMBER_FROM_FILE) $(BUILD_VERSION_TAGS)
BUILD_NUMBER定义在build/make/core/version_default.mk文件中,如下: |
三维半岛官网: http://www.thanksview.com
进入首页-
产品展示
物联网与人工智能 -
方案定制
嵌入式系统与液晶屏方案定制开发 -
技术支持
常见问题分析与解决