Подтвердить что ты не робот

Обновление данных часового пояса Android

Я использую Android 4.4.3 на моем устройстве и, конечно, имеет устаревшие часовые пояса, и я пытаюсь обновить tzdata in/system/usr/share/zoneinfo. Однако замена файла сразу не обновляет часовой пояс.

Так как ICU хранит собственную копию данных часового пояса, мы также должны ее заменить (согласно команде Google AOSP). Обновленные файлы данных Обновление для ICU и Обновление для bionic

Однако, когда я создаю и заменяю библиотеки icu4c (libicui18n.so и libicuuc.so) и заменяю icudt51l.dat на icudt53l.dat, система не может инициализировать ICU.

Я попытался распаковать icudt53l.dat и нажал его *.res файлы внутри старого icudt51l.dat, но это тоже не удалось, потому что инструмент ICUPKG проверяет контрольную сумму файла res перед их упаковкой.

Я следил за ссылка XDA для обновления tzdata, но этот подход потерпел неудачу, потому что они создают zoneinfo.dat, zoneinfo.idx, zoneinfo.version, используя tzdata. Но система ищет tzdata в /system/usr/share/zoneinfo

Я не являюсь часовым поясом или экспертом ICU, не могли бы вы указать мне, если я смотрю в неправильном направлении и помогаю.

4b9b3361

Ответ 1

Не нужно обновлять ICU или Bionic, вы можете просто изменить файл tzdata с обновленным. Также вам не нужно вручную генерировать файл tzdata из данных часового пояса IANA. Вы можете взять уже построенный tzdata из bionic repo. Вы можете найти файл обновления в последней версии Time Zone Data v. 2015g здесь.

После загрузки файла скопируйте его на свое устройство (например, /sdcard/Download/tzdata), затем откройте оболочку:

[email protected]:/ $ su
[email protected]:/ $ setprop persist.sys.timezone Europe/Istanbul
[email protected]:/ $ date -s 20151106.130000
Fri Nov  6 13:00:00 EET 2015
[email protected]:/ # mount -o rw,remount /system
[email protected]:/ # cd /system/usr/share/zoneinfo/
[email protected]:/system/usr/share/zoneinfo # cp tzdata tzdata.bak
[email protected]:/system/usr/share/zoneinfo # cp /sdcard/Download/tzdata tzdata
[email protected]:/system/usr/share/zoneinfo # chmod 644 tzdata
[email protected]:/system/usr/share/zoneinfo # date
Fri Nov  6 14:00:47 EEST 2015

Если после этого он все еще не работает:

[email protected]:/ # cd /data/misc/zoneinfo/
[email protected]:/data/misc/zoneinfo # cp tzdata tzdata.bak
[email protected]:/data/misc/zoneinfo # cp /sdcard/Download/tzdata tzdata
[email protected]:/data/misc/zoneinfo # chmod 644 tzdata

Как вы можете видеть в обновленном tzdata, часовой пояс в Европе/Стамбуле 6 ноября меняется от EET до EEST, потому что в версии 2015g турецкий DST отступает с 25 октября до 8-го ноября.