一般系统中设备类型为了集中管理,都会添加相应的宏来配置产品类型,宏名称为PRODUCT_CHARACTERISTICS。
PRODUCT_CHARACTERISTICS 支持的设备类型清单
- 基础设备类型
default:默认设备类型,通常用于手机类设备。
tablet:平板电脑类型,适用于大屏设备(如华为 MatePad、三星 Galaxy Tab)。
tv:智能电视或机顶盒设备类型(如 Android TV)。
watch:可穿戴设备类型,支持智能手表(如三星 Galaxy Watch)。
- 扩展设备类型
device:通用设备类型,用于非标准设备(如定制化设备或开发板)。
auto:车载设备类型,适配 Android Automotive OS 系统(如沃尔沃车载系统)。
可能Android新版本加入了其它的设备类型。
配置方式与示例
1. 在设备 Makefile 中定义
修改设备编译配置(如 device.mk),通过 PRODUCT_CHARACTERISTICS 指定设备类型:
PRODUCT_CHARACTERISTICS := tablet # 设置为平板类型
也有可能在其它项目的配置文件下,例如
device/rockchip/rk356x/rk356x_r/rk356x_r.mk
2. 资源差异化配置
在资源文件(如 strings.xml)中根据设备类型加载不同内容:
<string name="low_memory" product="tablet">平板存储空间不足,请清理文件。</string>
<string name="low_memory" product="default">手机存储空间不足,请清理文件。</string>
系统会根据当前设备的 PRODUCT_CHARACTERISTICS 自动匹配对应字符串。
关键属性与系统行为
- ro.build.characteristics:系统属性,由 PRODUCT_CHARACTERISTICS 生成,用于标识设备类型。
- 影响范围:
- 系统应用界面适配(如状态栏、导航栏布局)。
- 预装应用选择(如 TV 设备默认安装流媒体应用)。
- 系统功能开关(如分屏模式默认开启平板类型)。
调试与验证方法
1.查看当前设备类型属性:
adb shell getprop ro.build.characteristics
输出示例:tablet 或 default。
强制修改设备类型(需 Root):
adb shell setprop ro.build.characteristics tablet
兼容性注意事项
- 若设备类型配置错误(如平板设备设为 default),可能导致界面显示异常(如“关于手机”字符串替代“关于平板”)。
- 多设备适配时,需在代码中动态检测 ro.build.characteristics 属性,执行差异化逻辑。
以上就是修改系统默认产品类型的全部内容,学无止境,如有不对之处欢迎指正和交流。