2015-10-30 32 views
13

Ben Android cihazımda 4.4.3 çalıştırıyorum ve tabii ki zaman dilimlerini modası geçmiş ve ben/sistem/usr/share/zoneinfo yılında tzdata güncellemeye çalışıyorum. Ancak, dosyayı hemen değiştirmek, saat dilimini güncellemez.Güncelleme android saat dilimi verileri

ICU'dan bu yana, kendi değiştirmemiz gereken saat dilimi verilerini de (Google AOSP ekibine göre) tutar. Ben oluşturmak ve (libicui18n.so ve libicuuc.so) icu4c kütüphaneleri yerini ve icudt53l.dat ile icudt51l.dat değiştirdiğinizde güncellenmiş veri dosyaları Update for ICU ve Ancak Update for bionic

, ben, sistem Yoğun bakımı başlatılamıyor .

icudt53l.dat paketini açmayı ve * .res dosyalarını eski icudt51l.dat içine itmeyi denedim, ancak ICUPKG aracı bunları paketlemeden önce res dosyasının sağlama toplamını denetlediğinden başarısız oldu.

Ben XDA link to update tzdata izledi ama zoneinfo.dat, zoneinfo.idx, tzdata kullanarak zoneinfo.version dosyaları oluşturmak çünkü bu yaklaşım başarısız oldu. Ama sistem içinde/sistemin kendisi tzdata arar/usr/share/zoneinfo

yanlış yönde ve yardım bakarak isem ben bir zaman dilimi veya yoğun bakım uzmanı, beni işaret misiniz değilim.

+0

Os, icu veya her ikisini güncelleştirme hakkında mı soruyorsunuz? –

+0

Yalnızca icu güncelleştirmek istiyorum, ancak işletim sisteminin başka bileşenleri ICU sürümüne bağlıysa, işletim sistemini güncellemeyi umursamıyorum. –

+0

[Zaman Dilimi Verilerinin Güncellenmesi] (http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone Parçaları) ICU kullanıcı kılavuzundan sorunuzu yanıtlıyor musunuz? –

cevap

4

ICU veya Bionic'i güncellemek gerekli değil, sadece güncellenmiş olan tzdata dosyasını değiştirebilirsiniz. Ayrıca, IANA zaman dilimi verilerinden el ile tzdata dosyasını oluşturmanıza gerek yoktur. Zaten tzdata'u bionic repo'dan alabilirsiniz. Güncelleme dosyasını Time Zone Data v. 2015g here'un son sürümüne bulabilirsiniz. Bundan sonra yine çalışmazsa

[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 

: Dosyayı indirdikten sonra

cihazınızda (örneğin /sdcard/Download/tzdata) üzerine kopyalayın ve sonra bir kabuk açmak size şöyle

[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 

güncellenmiş tzdata ile 6 Kasım'da Avrupa/İstanbul saat dilimini EET'dan EEST'a çevirebiliriz, çünkü v. 2015g’de 25 Ekim’den 8 Kasım’a kadar olan DST düşüşü.

+0

+1 Zaten tzdata'yı bir düzine kez değiştirdim ama adb'den tarih komutunu hiç yapmadım. Tarihi Moskova için 1 saat geri döndü, doğru olduğunu fark ettim.Ancak, Ayarlar uygulaması hala GMT + 3 yerine GMT + 4'ü gösterdi. Dalvik-Cache'i sildim ve şimdi GMT + 3'ü gösterdim, daha önce hiç düşünmemiştim. Hangi sistem çağrılarının ICU'ya bağlı olduğunu biliyor musunuz? –

+1

Maalesef ICU'ya bağlı sistem çağrıları listesini bulamadım. Ben android repo JAVA bölümünde hızlı bir arama yapmaya çalıştım ve ICU'nun zaman dilimi için tek referans [ZoneGetter.java] (https://goo.gl/gkgOjv) 'TimeZoneNames' görünüyor. Diğer yerlerde bunun yerine doğrudan "tzdata" dosyasını kullanır, örneğin [ZoneInfoDB.java] 'da (https://goo.gl/KL5qlF) –