Android: Расхождение времени события в стоковом календаре Android

После того, как устранил проблему с часовым поясом на моем смартфоне Samsung Galaxy S Plus (GT-I9001), обнаружилась новая проблема (эта проблема вроде как актуальна только для Android 4).

Было:
Не было часового пояса «Московское стандартное время GMT +3», а было «Московское стандартное время GMT +4»

Стало:
«Московское стандартное время GMT +3», но при создании события я указывал, к примеру время 16:10, а на экране в созданном событии получал 17:10. В принципе это не очень страшно, т.к. оповещение все равно приходило в 16:10. Т.о. это была чисто косметическая проблема, хотя и сильно путала.

Решение:
В своей заметке я рассказал, как менять файл tzdata, но этого оказалось не достаточно. Для отображения времени Андроид использует данные из еще одного файла.

0. Делаем бэкап телефона и готовимся в случае неудачи (кирпича или bootloop) перепрошивать телефон!
1. Копируем с телефона файл /system/usr/icu/icu51dt.dat (644 rw–r––r––)
2. Качаем сборку ICU под вашу систему (скорее всего будет Windows, 32 или 64 бита)
3. Качаем 4 файла из самого последнего репозитория по этой ссылке
(далее идем <номер версии iana tz>/44/<папка платформы>/.)

«44» папка для обновлений ICU версии 4.4 и новее.
<папка платформы> «le» for little endian processors, including all Intel processors.
<папка платформы> «be» for big endian processors, including IBM Power and Sparc.
<папка платформы> «ee» for IBM mainframes using EBCDIC character sets.

4. Распаковываем файлы из пункта 3 в какую-нибудь папку, кладём туда же файл из пункта 1
5. Из консоли запускаем 4 команды

icupkg.exe -a metaZones.res icudt51l.dat
icupkg.exe -a timezoneTypes.res icudt51l.dat
icupkg.exe -a windowsZones.res icudt51l.dat
icupkg.exe -a zoneinfo64.res icudt51l.dat

Если будут написаны ошибки о некорректных ресурсах — прекращаем эксперименты
6. Кладём обновлённый icu51dt.dat в корень sdcard
7. Запускаем adb shell
8. Монтируем системный раздел на запись:

mount -o rw,remount /system

9. Копируем файл на место:

cat /sdcard/icudt51l.dat > /system/usr/icu/icudt51l.dat

10. Перезагружаем смартфон

На Xperia Z1C у меня примонтировать раздел не получилось — не было доступа, поэтому я перезагрузил смартфон в рекавери TWRP, там примонтировал раздел, скопировал файл и выставил разрешения (644 rw–r––r––)

Инструкция на сайте ICU.