Android Automotive OS13默认度量系统配置问题求助
解决方案:Android Automotive OS 13 预设默认度量单位
针对已配置波兰区域(pl_PL)和华沙时区,但系统默认使用华氏度、英里单位的问题,可通过以下几种方式预设正确的公制单位:
方法1:添加系统属性覆盖
在你的Android.mk或device.mk中,通过PRODUCT_PROPERTY_OVERRIDES添加度量单位相关的持久化属性:
PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.measurement_unit_metric=1 \ persist.sys.temperature_unit=celsius
persist.sys.measurement_unit_metric=1强制启用公制单位(公里、公斤等)persist.sys.temperature_unit=celsius设置温度单位为摄氏度
这些属性会被持久化存储,系统重启后依然生效。
方法2:配置默认设置文件
如果系统属性不生效,可通过default_settings.xml预设Settings Provider的默认值:
- 在设备配置目录下创建
default_settings.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?> <map> <bool name="measurement_unit_metric">true</bool> <string name="temperature_unit">celsius</string> </map>
- 在
Android.mk中添加拷贝规则,将文件复制到系统目录:
PRODUCT_COPY_FILES += \ device/[你的厂商目录]/[你的设备目录]/configs/default_settings.xml:system/etc/default_settings.xml
方法3:使用Settings应用Overlay
通过Overlay模块覆盖Settings应用的默认值,确保跳过设置向导后配置依然生效:
- 创建一个针对
com.android.settings的Overlay模块,在res/values/bools.xml中添加:
<resources> <bool name="def_measurement_unit_metric">true</bool> </resources>
- 在
res/values/strings.xml中添加:
<resources> <string name="def_temperature_unit">celsius</string> </resources>
- 在Overlay的
AndroidManifest.xml中指定目标应用:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yourvendor.settings.overlay"> <overlay android:targetPackage="com.android.settings" android:priority="1" /> </manifest>
最后在产品配置中引入这个Overlay模块:
PRODUCT_PACKAGES += com.yourvendor.settings.overlay
注意事项
- 上述配置中的key对应AAOS 13版本的Settings定义,若使用其他版本需确认key是否有变更
- 优先尝试方法1,系统属性配置最简单直接,无需额外文件或模块
内容的提问来源于stack exchange,提问作者Kaskader
相关产品推荐
相关产品推荐

