当前位置: 首页 > news >正文

Android更新时区版本-ianaVersion

代码路径

源码路径system/timezone

目录结构:

apex

  • 包含与Android时区更新APEX文件相关的代码,用于在Android设备上更新时区规则。

debug_tools

  • 包含调试Android设备时区问题的工具。

distro

  • 包含与“分发包”(distros)相关的代码,这些文件用于更新Android设备的时区规则。详见 distro/README

input_data

  • 包含时区规则更新过程的输入文件(部分来自外部,部分由Android维护)。另见 download-iana-data.py

input_tools

  • 包含生成Android时区文件的工具。

output_data

  • 包含从时区规则更新过程中生成的派生文件,用于系统镜像、分发包和APEX文件。另见 update-tzdata.py

testing

  • 包含与时区更新代码测试相关的工具和脚本。详见 testing/data/README

tzdatacheck

  • 用于在设备启动时执行的二进制文件,确保设备不会加载不兼容/过时的时区数据(例如OTA升级后的数据冲突),并负责提交分阶段的安装/卸载操作。

IANA规则数据更新流程

当IANA发布新时区规则时,更新步骤如下:

1.下载最新数据

登录iana官网Time Zone Database 下载最新的时区文件2025a

2.手动修改本地文件

根据需要调整 input_data/android 中的文件,将下载的文件tzdata2025a.tar.gz和tzdata2025a.tar.gz.asc放到system\timezone\input_data\iana目录下,之前的2021a版本删除掉。

3.处理ICU变更

某些 tzdata 更新可能伴随ICU代码或元数据变更(例如:http://bugs.icu-project.org/trac/search?q=2015d)。

4.生成新数据

update-tzdata.py  # 重新生成 output_data、ICU运行时文件等

run update-tzdata.py可能会遇到以下问题:

1.不一致的时区映射

  • 每个列出国家/地区(如 cakimnmxua)的 IANA 列表和 countryzones.txt 中的列表存在不同。
  • 例如,对于 Canadaca),IANA 列出了一些时区,但 countryzones.txt 中没有包括所有的时区。这不仅影响数据的一致性,也可能导致后续处理中的失败。

解决方案更新countryzones.txt,手动校对 IANA 时区数据(最新的 tzdata)与 countryzones.txt 的内容。您可以从 IANA 的最新时区数据库中提取需要的时区名称,并更新 countryzones.txt 文件

2.BuildTzlookup方法执行失败

3554:5: com.android.libcore.timezone.tzlookup.proto.TimeZoneMapping.alternativeIds
3639:5: com.android.libcore.timezone.tzlookup.proto.TimeZoneMapping.alternativeIds
        at com.google.protobuf.TextFormat$Parser.checkUnknownFields(TextFormat.java:1566)
        at com.google.protobuf.TextFormat$Parser.merge(TextFormat.java:1587)
        at com.google.protobuf.TextFormat$Parser.merge(TextFormat.java:1495)
        at com.google.protobuf.TextFormat$Parser.merge(TextFormat.java:1467)
        at com.android.libcore.timezone.tzlookup.CountryZonesFileSupport.parseCountryZonesTextFile(CountryZonesFileSupport.java:40)
        ... 2 more
Traceback (most recent call last):
  File "./update-tzdata.py", line 271, in <module>
    main()
  File "./update-tzdata.py", line 255, in main
    BuildTzlookup(iana_data_dir)
  File "./update-tzdata.py", line 188, in BuildTzlookup
    subprocess.check_call([command, countryzones_source_file, zone_tab_file, tzlookup_dest_file])
  File "/usr/lib/python2.7/subprocess.py", line 190, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/workspace/android11_trout_r48/out/host/linux-x86/bin/tzlookup_generator', '/workspace/android11_trout_r48/system/timezone/input_data/android/countryzones.txt', '/tmp/tmpMi1HVD-tzdata/iana_data/zone.tab', '/workspace/android11_trout_r48/system/timezone/output_data/android/tzlookup.xml']' returned non-zero exit status 1

解决方案直接注释BuildTzlookup

执行完之后会生成如下文件:

5.提交代码

上传并提交 external/icusystem/timezone 的变更。实测external/icu的数据可以不用提交

编译完成后生成的tzdata数据在system/user/share/zoneinfo目录下

可以对比Google patch

platform/system/timezone - Git at Googlehttps://android.googlesource.com/platform/system/timezone/

相关文章:

  • docker-compose部署mongodb副本集集群
  • 介绍一下安装时情况 kubernetes 集群
  • RLHF-GRPO
  • 快速部署:在虚拟机上安装 CentOS 7 的详细步骤
  • css实现元素垂直居中显示的7种方式
  • 23中设计模式之观察者模式
  • 05类加载机制篇(D4_虚拟机类加载机制)
  • 【数据结构】堆(挑战从零基础到进阶)
  • 团队学习—系统思考
  • plt和cv2有不同的图像表示方式和颜色通道顺序
  • c语言笔记 指针进阶
  • 机器学习12-视觉识别任务
  • 【音视频】ffplay简单过滤器
  • STM32 SPI的应用开发
  • NET431-C协议网关:跨网段·零编程PLC工业通信终极方案
  • 八卡5090服务器首发亮相!
  • idea创建测试方法测试接口是否能够正常使用
  • [Python入门学习记录(小甲鱼)]第5章 列表 元组 字符串
  • 【从模仿到超越:AIGC的崛起与AGI的终极梦想】
  • 解决:Word 保存文档失败,重启电脑后,Word 在试图打开文件时遇到错误
  • 衡水建站公司/卡点视频免费制作软件
  • 淘宝网发布网站建设/南宁seo全网营销