背景: 墨西哥取消夏令时,Android 系统的时区时间会不对,需要同步更新时区。
解决方案 – – 更新timezone data (以Android10 为例):
- 更新system/timezone/,主要检查system/timezone/input_data/iana 下的tzdata 更新至2023a
https://android.googlesource.com/platform/system/timezone/+/refs/heads/android10-dev - 同步更新externam/icu, 以防全编报错。
https://android.googlesource.com/platform/external/icu/+/refs/heads/android10-dev - 进入system/timezone, 执行
python update-tzdata.py
- 此时system/timezone/和external/icu会有更新
验证方式:
- Setting > System > Date Time > disable Use Network Provider Time > disable use network provided time zone > under select Time zone > choose Mexico City 检查时间是否正确, Mexio
- 查看tz_version版本是否都更新到2023a。
/system/usr/share/zoneinfo/tz_version
/system/usr/share/zoneinfo/tzdata
该方案在Android10及以下的平台都可以完全解决该问题。
但是在Android11该方案没有生效!!!
根据log," zygote : Time zone APEX ICU file found: /apex/com.android.tzdata/etc/icu/icu_tzdata.dat"
查看com.android.tzdata下tz_version 没有更新。
cat apex/com.android.tzdata/etc/tz/tz_version
新增修改, 更新com.android.tzdata apks
然鹅,又有新的问题,
run cts -m CtsIcuTestCases -t com.android.i18n.test.timezone.TimeZoneIntegrationTest#testTzDataSetVersions fail
run gts -m GtsOsTestCases -t com.google.android.os.gts.MainlineConfigurationTest#testMainlineApprovedTrain fail
原因就是不能单独更新com.android.tzdata apksvendor/partner_modules下需要统一更新mainline,这一块就请相关同事帮忙处理更新。
如果国内的产品不需要跑CTS和GTS的话,现有方案已经可以解决该问题。
其他收获的话,还是要时常关注google对Android的更新。