摘要:本文主要介绍android 5.1与android 9.0更新时区文件的方法。
一、相关文件下载
由于不同平台路径不同,请全局搜索文件update-tzdata.py。
通过update-tzdata.py可以获悉,需要从http://www.iana.org/time-zones/下载相关的tzdata文件。
这里请注意,需要下载两个tzdata文件:
一个是最新的tzdata(Latest version),用于获取最新的时区规则。
另一个是平台对应的tzdata版本(查看文件./external/icu/icu4c/source/data/misc/zoneinfo64.txt),tz version:所对应的版本。可以通过官方的ftp获取历史版本 ftp://ftp.iana.org/tz/
二、android 5.1
平台是MSM8916 BUILD_ID=LMY47V
平台对应的tzdata版本:tzdata2015a
最新的tzdata版本:tzdata2023c
请将平台对应的tzdata2015a.tar.gz放到bionic/libc/tools/zoneinfo/tzdata2015a.tar.gz
修改bionic/libc/tools/zoneinfo/update-tzdata.py文件(此文件会从ftp下载对应的tzdata2015a.tar.gz,但是由于网速原因,直接从官网下载,所以需要修改脚本)里的main函数:
def main():
print 'Looking for new tzdata...'
# If you're several releases behind, we'll walk you through the upgrades
# one by one.
current_version = GetCurrentTzDataVersion()
current_filename = '%s.tar.gz' % current_version
filename = "tzdata2015a.tar.gz"
BuildIcuToolsAndData(filename)
BuildBionicToolsAndData(filename)
print 'Look in %s and %s for new data files' % (bionic_dir, icu_dir)
sys.exit(0)
在根目录source build/envsetup.sh并选择项目后,进入bionic/libc/tools/zoneinfo/update-tzdata.py所在路径并执行脚本python update-tzdata.py
注意:如果执行过脚本,需要先删除bionic/libc/tools/zoneinfo/icu,否则报错
执行结束显示:
Look in /home/SW/workspace/MSM_8916/bionic and /home/SW/workspace/MSM_8916/external/icu/icu4c/source for new data files
更新的文件为:
bionic/libc/tools/zoneinfo/update-tzdata.py
external/icu/icu4c/source/data/misc/zoneinfo64.txt
bionic/libc/zoneinfo/tzdata
关键是要提交tzdata,其他提不提无所谓。
三、android 9.0
平台是MSM8909 BUILD_ID=PKQ1.190903.001
平台对应的tzdata版本:tzdata2018i
最新的tzdata版本:tzdata2023c
请将平台对应的tzdata2018i.tar.gz放到system/timezone/input_data/iana/tzdata2018i.tar.gz
在根目录source build/envsetup.sh并选择项目后,进入/system/timezone/update-tzdata.py所在路径并执行脚本python update-tzdata.py
执行结束显示:
Look in /home/SW/workspace/MSM8909_AOSP/system/timezone/output_data and /home/SW/workspace/MSM8909_AOSP/external/icu for new files
更新的文件为:
external/icu/icu4c/source/data/misc/zoneinfo64.txt
system/timezone/output_data/android/tzlookup.xml
system/timezone/output_data/distro/distro.zip
system/timezone/output_data/iana/tzdata
system/timezone/output_data/icu_overlay/icu_tzdata.dat
四、更新参数
用最新的tzdata2023c.tar.gz里对应的文件即可。
比如去掉墨西哥夏令时,原来文件northamerica里的规则
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
Rule Mexico 1939 only - Jun 25 0:00 0 S
Rule Mexico 1940 only - Dec 9 0:00 1:00 D
Rule Mexico 1941 only - Apr 1 0:00 0 S
Rule Mexico 1943 only - Dec 16 0:00 1:00 W # War
Rule Mexico 1944 only - May 1 0:00 0 S
Rule Mexico 1950 only - Feb 12 0:00 1:00 D
Rule Mexico 1950 only - Jul 30 0:00 0 S
Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
Rule Mexico 2001 only - Sep lastSun 2:00 0 S
Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
Rule Mexico 2002 max - Oct lastSun 2:00 0 S
把最后两行删除或者把TO列改成2022(过去的时间点)即可