📢 1. 职业规划篇
📢 2.基础篇
基础篇.用 bugreport 带你看 Crash 和 ANR
📢 3. 系统应用篇
系统应用篇.解密 Partner、google PAI 机制
📢 4. 系统篇
系统篇.SystemServer 简介、自定义 Service 服务一
系统篇.SystemServer 简介、自定义 Service 服务二
系统篇.SystemServer 简介、自定义 Service 服务三
系统篇.SystemServer 简介、自定义 Service 服务四
📢 5. 性能篇
(省)低内存优化
性能篇 (省).SystemServer 与 LMK 的 socket 通信
(稳)稳定性优化
(快)开机优化
framework交流,答疑:251662478
Android 系统定制:常见名称修改全解析!
在 Android 系统开发和 ROM 定制中,我们经常需要修改一些默认名称,例如 蓝牙名称、设备名称、热点名称 等。虽然这些名称在 AOSP 源码中有默认值,但各厂商 ROM 一般都会修改这些配置,以符合自己的品牌需求。
今天,我们就来深入解析 修改蓝牙、设备、热点名称的方法,让你的 ROM 更具个性化!🚀
🔹 1. 蓝牙名称修改
📌 1.1 AOSP 原生默认蓝牙名称
在 Android 13 AOSP 源码中,默认蓝牙名称的定义位于:
/device/generic/common/bluetooth/bdroid_buildcfg.h
其中:
#ifndef _BDROID_BUILDCFG_H
#define _BDROID_BUILDCFG_H
#define BTM_DEF_LOCAL_NAME "Android Bluedroid"
#endif
这里的 BTM_DEF_LOCAL_NAME 定义了默认的蓝牙名称,修改它可以影响蓝牙设备的显示名称。
📌 1.2 定制 ROM 蓝牙名称
但在 实际开发中,蓝牙名称一般 不是直接硬编码在 AOSP 代码中,而是 动态从 vendor 目录下提取,通常在 vendor/ 目录下也会有对应的 bdroid_buildcfg.h 文件,例如:
vendor/某厂商/bluetooth/bdroid_buildcfg.h
在该文件中,同样可以找到:
#define BTM_DEF_LOCAL_NAME "XXX品牌-Bluetooth"
📌 修改方式:
- 找到 vendor 目录下的
bdroid_buildcfg.h。
修改 BTM_DEF_LOCAL_NAME 的值,如:
#define BTM_DEF_LOCAL_NAME "MyCustomROM Bluetooth"
- 重新编译 AOSP,烧录到设备,即可生效。
🔹 2. 设备名称修改
📌 2.1 AOSP 设备名称的存储
在 Android 13 中,设备名称的逻辑在 MtpDatabase.java:
/frameworks/base/media/java/android/mtp/MtpDatabase.java
其中:
case MtpConstants.DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME:
// 设备友好名称存储在 SharedPreferences
value = mDeviceProperties.getString(Integer.toString(property), "");
length = value.length();
可以看出,设备名称默认存储在 SharedPreferences 中,而非硬编码。
📌 2.2 定制 ROM 设备名称
在 定制 ROM 时,设备名称 通常不是直接在代码中写死,而是从 SystemProperties 获取,即:
value = SystemProperties.get("ro.product.model", "");
📌 修改方式:
- 找到
build.prop或system.prop文件(通常在device/某厂商/某机型/目录下)。
修改设备名称属性:
ro.product.model=MyCustomPhone
- 重新编译 AOSP 并刷机,修改后的设备名称将在设备信息、USB 连接时显示。
🔹 3. 热点(WiFi AP)名称修改
📌 3.1 AOSP 热点名称的存储
Android 13 中,默认 热点(WiFi AP)名称 由 WifiApConfigStore.java 定义:
// /packages/modules/Wifi/service/java/com/android/server/wifi/WifiApConfigStore.java
private SoftApConfiguration getDefaultApConfiguration() {
SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder();
configBuilder.setSsid(mContext.getResources().getString(
R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid());
可以看到,默认热点名称是 wifi_tether_configure_ssid_default + 随机数。
📌 3.2 定制 ROM 热点名称
在 定制 ROM 时,热点名称通常会被 overlay 机制覆盖,即:
AOSP 代码 里默认 wifi_tether_configure_ssid_default存放在 res/values/strings.xml:
<string name="wifi_tether_configure_ssid_default">AndroidAP</string>
但在实际 ROM 开发中,厂商一般会使用 overlay 机制覆盖该值,而 overlay 配置一般位于:
vendor/overlay/某厂商/wifi/res/values/strings.xml
其中可能会有:
<string name="wifi_tether_configure_ssid_default">MyCustomROM_AP</string>
📌 修改方式:
- 找到
vendor/overlay目录下的strings.xml文件。
修改 wifi_tether_configure_ssid_default,如:
<string name="wifi_tether_configure_ssid_default">CustomWiFi</string>
- 重新编译 & 刷机,默认热点名称修改成功!
🔹 4. 总结
| 名称类型 | AOSP 代码路径 | 定制 ROM 方案 |
|---|---|---|
| 蓝牙名称 | bdroid_buildcfg.h | 修改 vendor/ 目录下 bdroid_buildcfg.h |
| 设备名称 | MtpDatabase.java | 修改 build.prop (ro.product.model) |
| 热点名称 | WifiApConfigStore.java | 修改 overlay 目录中的 strings.xml |
🔹 5. 进阶:使用 overlay 动态修改
除了直接修改代码,还可以使用 Android Overlay 机制 动态修改 各类名称。
📌 示例:通过 overlay 修改 wifi_tether_configure_ssid_default
<string name="wifi_tether_configure_ssid_default" translatable="false">MyROM_Hotspot</string>
📌 示例:通过 overlay 修改 ro.product.model
ro.product.model=MyCustomDevice
✅ overlay 方式的好处:
- 无需改动 AOSP 源码,只需修改
overlay资源。 - 不同机型可灵活适配,实现 动态修改默认名称。
🚀 6. 你学会了吗?
以上就是 AOSP & ROM 定制中的常见名称修改技巧,无论是 蓝牙、设备名称、热点名称,都可以通过 修改源码 & overlay 机制 进行定制。
✅ 如果你是 ROM 开发者,这些知识点是必须掌握的!
✅ 如果你是 AOSP 深度学习者,尝试修改源码 & 编译 ROM,你会学到更多!
📢 欢迎留言交流,学习更多 Android 系统开发技巧!🔥