You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android 8上更新时区文件tzdata

手动更新Android系统tzdata时区文件(解决夏令时变更问题)

一、准备最新时区数据源

  • 从IANA官方tz数据库获取最新的tzdata压缩包(如tzdata202x.tar.gz),解压后得到各区域的时区定义文件(比如america/chile、asia/lebanon这类细分文件,或是africa、europe等总区域文件)。

二、用NDK编译tzdata

  1. 配置NDK环境:确保已安装对应版本的Android NDK,设置NDK_PATH环境变量指向NDK根目录。
  2. 编译时区文件:
    • 创建临时目录存放解压后的tzdata文件,使用NDK自带的zic(时区编译器)生成适配Android的二进制时区文件,命令示例:
      # 编译单个国家时区(以智利、黎巴嫩为例)
      $NDK_PATH/prebuilt/linux-x86_64/bin/zic -d output_zoneinfo -L leap-seconds.list america/chile
      $NDK_PATH/prebuilt/linux-x86_64/bin/zic -d output_zoneinfo -L leap-seconds.list asia/lebanon
      
      # 批量编译所有时区文件
      $NDK_PATH/prebuilt/linux-x86_64/bin/zic -d output_zoneinfo -L leap-seconds.list *.txt
      
      注:-d指定编译后文件的输出目录,-L指定闰秒文件路径(可从tzdata包中获取),最后参数是要编译的时区定义文件。
  3. 验证结果:编译完成后,output_zoneinfo目录会生成和系统/system/usr/share/zoneinfo结构一致的二进制时区文件。

三、替换系统时区文件

  1. 确保设备已获取root权限,或拥有系统分区写入权限。
  2. 挂载系统分区为可读写:
    mount -o rw,remount /system
    
  3. 备份原有文件(避免出错无法恢复):
    cp -r /system/usr/share/zoneinfo /system/usr/share/zoneinfo_backup
    
  4. 替换编译好的文件:
    cp -r output_zoneinfo/* /system/usr/share/zoneinfo/
    
  5. 恢复系统分区为只读:
    mount -o ro,remount /system
    
  6. 重启设备,通过系统时间设置或执行date命令验证夏令时规则是否更新。

四、tzupdater APK失败的原因

tzupdater APK报错“获取最新版本失败”,大多是因为设备网络无法访问IANA数据源服务器,或是没有足够权限写入系统分区。手动编译替换的方式更可控,能规避这些问题。

内容的提问来源于stack exchange,提问作者Tamim Zawahiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:44:56