【发布时间】:2015-10-30 15:05:41
【问题描述】:
我在我的设备上运行 Android 4.4.3,当然它有过时的时区,我正在尝试更新 /system/usr/share/zoneinfo 中的 tzdata强>。但是直接替换文件并不会更新时区。
由于 ICU 保留了自己的时区数据副本,因此我们也必须替换它(根据 Google AOSP 团队的说法)。更新后的数据文件为Update for ICU和Update for bionic
但是,当我构建和替换 icu4c 库(libicui18n.so 和 libicuuc.so)并将 icudt51l.dat 替换为 icudt53l.dat 时,系统无法初始化 ICU。
我曾尝试解压 icudt53l.dat 并将其 *.res 文件推送到旧的 icudt51l.dat 中,但同样失败了,因为 ICUPKG 工具会在打包之前检查 res 文件的校验和。
我关注了XDA link to update tzdata,但这种方法失败了,因为他们使用 tzdata 创建 zoneinfo.dat、zoneinfo.idx、zoneinfo.version 文件。但是系统会在 /system/usr/share/zoneinfo 中查找 tzdata 本身
我不是时区或 ICU 专家,如果我看错了方向并提供帮助,请指点我。
【问题讨论】:
-
您是要更新 os、icu 还是两者都更新?
-
我只想更新 icu,但如果操作系统的任何其他组件依赖于 ICU 版本,我不介意更新操作系统。
-
ICU 用户指南中的Updating the Time Zone Data 是否回答了您的问题?
-
我尝试将 metaZones.res、timezoneTypes.res、windowZones.res 和 zoneinfo64.res 打包到我设备上的当前 icudt51l.dat 中。也改了对应的tzdata还是没有效果。
标签: android timezone kernel android-4.4-kitkat icu