Android 10'da APK tabanlı saat dilimi verileri kullanımdan kaldırılıyor güncelleme mekanizması (Android 8.1 ve Android 9'da kullanılabilir) ve APEX tabanlı modül güncelleme mekanizması kullanabilirsiniz. AOSP 8.1 ile 13 arasındaki sürümlerde, OEM'lerin APK tabanlı güncellemeler sayesinde Android 10'a geçen cihazlar APK aracılığıyla iş ortakları tarafından sağlanan saat dilimi veri güncellemelerini almaya devam edebilir. Ancak, APK güncelleme mekanizması bir üretim cihazında kullanılmamalıdır APK tabanlı bir güncelleme olarak da alan bir APK'nın, APEX tabanlı güncelleme (APK güncellemesi alan bir cihaz, APEX tabanlı güncellemeler için kullanılır).
Saat dilimi güncellemeleri (Android 10 ve sonraki sürümler)
Android 10 ve sonraki sürümlerde desteklenen Saat Dilimi Verileri modülü Android cihazlarda yaz saati (YS) ve saat dilimlerinin daha hızlı güncellenmesi Dini, siyasi ve politik unsurlar açısından sık sık değişebilen verileri standartlaştırmak jeopolitik nedenler.
Güncellemeler aşağıdaki süreci kullanır:
- IANA saat dilimi veritabanı için bir güncelleme yayınladığında, bir veya daha fazla hükümetin ülkelerindeki saat dilimi kuralını değiştirmesi.
- Google veya Android iş ortağı bir Saat Dilimi Veri modülü güncellemesi hazırlar (APEX dosyası) açın.
- Son kullanıcı cihazı güncellemeyi indirir, yeniden başlatır, ardından sonra cihazın saat dilimi verileri yeni saat dilimini içerir bazı verilerdir.
Modüllerle ilgili ayrıntılar için Modüler Sistem Bileşenleri.
Saat dilimi güncellemeleri (Android 8.1-9)
Not: APK tabanlı saat dilimi veri güncelleme mekanizması özelliği, Android 14'ten itibaren tamamen kaldırıldı ve şurada bulunamıyor: kaynak koda ekleyin. İş ortakları, Google Cloud'un Saat Dilimi Ana hat modülü.
Android 8.1 ve Android 9'da OEM'ler, Android 8.1 ve Android 9'da saat dilimi kuralı verilerini sistem güncellemesi gerekmeden cihazlara güncelledi. Bu mekanizma, kullanıcıların güncellemeleri zamanında almasına olanak sağlar (böylece, kullanım ömrü boyunca kullanılabilir) ve Android iş ortaklarının saat dilimi, sistem görüntüsü güncellemelerinden bağımsız olarak güncellenir.
Android temel kitaplıklar ekibi, Stok bir Android cihazda saat dilimi kuralları güncelleniyor. OEM'ler bunları veri dosyalarını kullanarak kendi cihazları için saat dilimi güncellemeleri oluşturabilir veya kendi cihazlarını kendi veri dosyalarınıza sahip olmanız gerekir. Her durumda, kalite kontrolü OEM'lerin elindedir saat dilimi kuralı güncellemelerinin güvence/test, zamanlama ve kullanıma sunulması, cihazlar.
Android saat dilimi kaynak kodu ve verileri
Bu özelliği kullanmayanlar da dahil olmak üzere tüm stok Android cihazlarda saat dilimi belirtilmelidir
saat dilimi kuralları verilerinin bulunduğu varsayılan bir saat dilimi
/system
bölümü. Bu veriler daha sonra
aşağıdaki kitaplıkları inceleyin:
libcore/
tarafından yönetilen kod (örneğin,java.util.TimeZone
),tzdata
vetzlookup.xml
dosya.bionic/
içindeki yerel kitaplık kodu (örneğin,mktime
, yerel saat sistem çağrıları)tzdata
dosyasını kullanır.external/icu/
bölgesindeki ICU4J/ICU4C kitaplık kodu icu'yu kullanır.dat
dosya
Bu kitaplıklar,
/data/misc/zoneinfo/current
dizini. Yer paylaşımlı dosyalar bekleniyor
İyileştirilmiş saat dilimi kuralları verileri içerir, böylece cihazların güncellenmesini sağlar
/system
değiştirmeden.
Saat dilimi kural verileri gerektiren Android sistem bileşenleri şunları kontrol eder: önce konum:
libcore/
vebionic/
kodu,/data
tzdata
vetzlookup.xml
kopyası dosyası olarak da kaydedebilir.- ICU4J/ICU4C kodu,
/data
içindeki dosyaları kullanır ve Mevcut olmayan veriler için/system
dosya (biçimler için yerelleştirilmiş) dizeler vb.) belirtin.
Distro dosyaları
Distro .zip
dosyaları,
/data/misc/zoneinfo/current
dizini. Distro dosyaları ayrıca
Cihazların sürüm oluşturma sorunlarını tespit etmesine olanak tanıyan meta veriler içerir.
Distro dosya biçimi Android sürümüne bağlıdır çünkü içeriği ICU sürümü, Android platform gereksinimleri ve diğer sürümlerdeki değişiklikler anlamına gelir. Android, desteklenen Android sürümlerinin her biri için dağıtım dosyaları sağlar: IANA güncellemesi (platformun sistem dosyalarını güncellemeye ek olarak). Kullanıcıların güncel cihazlarda, OEM'ler bu dağıtım dosyalarını kullanabilir veya komut dosyalarını ve diğer dosyaları içeren Android kaynak ağacı, dağıtım dosyaları oluşturacaktır).
Saat dilimi güncelleme bileşenleri
Saat dilimi kuralları güncellemesi, dağıtım dosyalarının bir ve içindeki dosyaların güvenli bir şekilde yüklenmesini sağlayabilir. Aktar ve yükleme işlemi için aşağıdakiler gereklidir:
- Platform hizmeti işlevi
(
timezone.RulesManagerService
), Bu ayar varsayılan olarak devre dışıdır. OEM'ler, bu işlevi yapılandırma aracılığıyla etkinleştirmelidir.RulesManagerService
, sistem sunucusu işleminde ve aşamalarında çalışır adresine yazarak saat dilimi güncelleme işlemleri/data/misc/zoneinfo/staged
.RulesManagerService
şunları yapabilir: önceden hazırlanmış işlemleri de değiştirin veya silin. -
TimeZoneUpdater
güncellenemez sistem uygulaması (Güncelleyici uygulaması olarak da bilinir). OEM'ler bu uygulamayı sistem görüntüsüne eklemelidir ne kadarının olduğunu öğreneceksiniz. - OEM
TimeZoneData
güncellenebilir bir sistem uygulaması (diğer adıyla Veri uygulaması) içerir. Google Play Games Beta ile erişebilirsiniz. OEM'ler bu uygulamayı cihazın sistem görüntüsüne eklemelidir: cihazlar arasında eşlemiyoruz. -
tzdatacheck
saat dilimi güncellemelerinin doğru ve güvenli bir şekilde çalışması için gereken başlatma zamanı ikili programı.
Android kaynak ağacı, yukarıdakiyle ilgili genel kaynak kodunu içerir bileşenlerden bazılarını ele alacağız. Kodu test et kontrol edebilmesi için sağlanır. doğru bir şekilde etkinleştirdiklerinden emin olun.
Distro montajı
Dağıtım işlemi aşağıdaki adımları içerir:
- Veri uygulaması, bir uygulama mağazasından indirilebilir veya
başka cihazdan yüklenir. Sistem sunucusu işlemi (
timezone.RulesManagerServer/timezone.PackageTracker
sınıf) yapılandırılmış, OEM'ye özgü Veri uygulaması paketinde yapılan değişiklikleri izler dokunun.
Şekil 1. Veri uygulaması güncellemeleri.
- Sistem sunucusu işlemi bir güncelleme kontrolünü tetikler.
Güncelleyiciye benzersiz, tek kullanımlık bir jetonla hedeflenen bir amaç yayınlama
Başv. Sistem sunucusu, oluşturduğu en son jetonu takip eder, böylece
tetiklediği en son kontrolün ne zaman tamamlandığını belirleyebilir. diğer
jetonlar yok sayılır.
Şekil 2. Güncelleme kontrolünü tetikleyin.
- Güncelleme kontrolü sırasında Güncelleyici uygulaması şunları gerçekleştirir:
şu görevlerden yararlanabilirsiniz:
- Kural Yöneticisi Hizmeti'ni çağırarak geçerli cihaz durumunu sorgular.
Şekil 3. Veri uygulaması güncellemeleri, Kural Yöneticisi Hizmeti'ni çağırıyor.
- İyi tanımlanmış bir ContentProvider URL'sini sorgulayarak Veri uygulamasını sorgular ve
sütun özelliklerine bakın.
4.Şekil Veri uygulaması güncellemeleri, dağıtım hakkında bilgi alın.
- Kural Yöneticisi Hizmeti'ni çağırarak geçerli cihaz durumunu sorgular.
- Güncelleyici uygulaması,
daha yakından inceleyeceğiz. Kullanılabilir işlemler şunlardır:
- Yükleme isteğinde bulunun. Distro verileri, Data uygulamasından okunur ve sistem sunucusundaki RulesManagerService'e iletilir. İlgili içeriği oluşturmak için kullanılan Kural Yöneticisi Hizmeti, dağıtım biçimi sürümünün ve içeriğinin ve kurulumu aşamalandırmalıdır.
- Kaldırma isteğinde bulunun (Bu nadiren görülür). Örneğin,
/data
ürünündeki APK devre dışı bırakılıyor veya kaldırılıyor ve cihaz şu anda/system
sürümünde bulunan sürüme dönülüyor. - Hiçbir işlem yapmamayı tercih edebilirsiniz. Veri uygulaması dağıtımının geçersiz olduğu tespit edildiğinde gerçekleşir.
5. Şekil. Kontrol tamamlandı.
- Yeniden başlatın ve tzdatacheck. Cihaz bir sonraki başlatıldığında,
tzdatacheck ikilisi, herhangi bir aşamalı işlemi yürütür. tzdatacheck ikilisi,
şu görevleri gerçekleştirebilirsiniz:
- Oluşturma, değiştirme, oluşturma ve değiştirme işlemlerini yaparak aşamalı
ve/veya silme işleminden önce
/data/misc/zoneinfo/current
dosyanın silinmesi diğer sistem bileşenleri açılıp dosyaları kullanmaya başladı. /data
klasöründeki dosyaların şu anki dosya için doğru olduğundan emin olun platform sürümü (cihaz yeni bir sistem güncellemesi ve dağıtım biçimi sürümü değişti.- IANA kuralları sürümünün, aşağıdaki sürümdeki sürümle aynı veya daha yeni olduğundan emin olun:
/system
Bu, cihazdan çıkan sistem güncellemelerine karşı koruma sağlar/system
saat diliminde olduğundan daha eski saat dilimi kuralları verileri içerir görüntüsüdür.
- Oluşturma, değiştirme, oluşturma ve değiştirme işlemlerini yaparak aşamalı
ve/veya silme işleminden önce
Güvenilirlik
Uçtan uca yükleme süreci eşzamansız olup üç işletim sistemine bölünmüştür. daha fazla bilgi edineceksiniz. Yükleme sırasında herhangi bir noktada cihaz güç kaybına neden olabilir, kalmayabilir veya başka sorunlarla karşılaşabilirsiniz. Bu da, yükleme denetiminin eksik olmamalıdır. En iyi başarısız durumlarda Güncelleyici uygulaması sistemi bilgilendirir. sunucu tarafından gerçekleştirilen hatalar; en kötü durumda da Kural Yöneticisi Hizmeti hiç çağrı almıyor.
Sistem sunucusu kodu, bunu yapmak için bir etkinliğin tetiklenip tetiklenmediğini güncelleme kontrolünün tamamlandığını ve Veri Uygulama. Cihaz boşta ve şarj olurken, sistem sunucu kodu durumu değiştirir. Güncelleme kontrolünde eksiklik veya beklenmedik veri olduğunu tespit ederse uygulama sürümündeyken kendiliğinden bir güncelleme kontrolünü tetikler.
Güvenlik
Etkinleştirildiğinde, sistem sunucusundaki RulesManagerService kodu birçok kontrol gerçekleştirerek sistemin güvenli olduğundan emin olmaktır.
- Kötü yapılandırılmış bir sistem görüntüsünün olduğunu gösteren sorunlar cihazın çalışmasını engelliyor
başlatılıyor; kötü bir Güncelleyici veya Veri uygulaması yapılandırması ya da
Güncelleyici veya veri uygulaması
/system/priv-app
içinde yok. - Kötü bir veri uygulamasının yüklendiğini gösteren sorunlar şunu engellemez: cihaz önyükleniyor, ancak bir güncelleme kontrolünün tetiklenmesini önleyin; örnekler veya Veri uygulaması herhangi bir güvenlik açığı oluşturmuyor. Beklenen URI'deki ContentProvider.
/data/misc/zoneinfo
dizinleri için dosya izinleri:
zorunlu kılınır. Tüm APK'larda olduğu gibi, Veri uygulaması
/system/priv-app
sürümünü imzalamak için kullanılan anahtarın aynısı. Veri uygulaması
OEM'e özgü özel bir paket adı ve anahtarı olması beklenir.
Saat dilimi güncellemelerini entegre etme
Saat dilimi güncelleme özelliğini etkinleştirmek için OEM'ler genellikle:
- Kendi veri uygulamasını oluşturmalıdır.
- Sistem görüntüsü derlemesine Güncelleyici ve Veri uygulamalarını ekleyin.
- Sistem sunucusunu, RulesManagerService'i etkinleştirecek şekilde yapılandırın.
Hazırlık
OEM'ler başlamadan önce aşağıdaki politikayı, kalite güvencesini, ve güvenlikle ilgili konular:
- Veri uygulaması için uygulamaya özel özel bir imzalama anahtarı oluşturmalıdır.
- Saat dilimi güncellemeleri için sürüm ve sürüm stratejisi oluşturma bu güncellemenin hangi cihazlarda yapılacağını ve bu güncellemenin yalnızca bu güncellemelere ihtiyaç duyan cihazlara yüklenir. Örneğin, OEM’ler tüm cihazlarında tek bir veri uygulamasına sahip olmalarını sağlayabilir veya farklı cihazlarda Farklı cihazlara yönelik veri uygulamaları. Karar, paket seçimini etkiler muhtemelen kullanılan sürüm kodları ve KG stratejisi.
- Stok Android saat dilimi verilerini kullanmak isteyip istemediklerini anlama AOSP'den edinebilir veya kendi sitelerini oluşturabilirler.
Veri uygulaması oluştur
AOSP, şurada veri uygulaması oluşturmak için gereken tüm kaynak kodunu ve derleme kurallarını içerir:
Talimatlar ve örnek şablonlarla packages/apps/TimeZoneData
AndroidManifest.xml
ve şu konumda bulunan diğer dosyalar için:
packages/apps/TimeZoneData/oem_template
. Örnek şablonlar şunlardır:
hem gerçek veri uygulaması APK'sı için bir derleme hedefi hem de
Data uygulamasının test sürümlerini oluşturma.
OEM'ler Veri uygulamasını kendi simgeleri, adları, çevirileri ve bazı ipuçları vereceğim. Ancak Veri uygulaması başlatılamadığı için simge yalnızca Ayarlar > Uygulamalar ekranını açın.
Veri uygulaması, bir tapas derlemesiyle derlenecek şekilde tasarlanmıştır. sistem görüntüsüne eklenmeye uygun APK'lar üreten APK'lar (ilk sürüm için ve bir uygulama mağazası üzerinden imzalanıp dağıtılması (sonraki uygulama güncelleme) gerekir. Tapas kullanmayla ilgili ayrıntılar için bkz. Tapas kullanan veri uygulaması.
OEM'ler, cihazın sistem görüntüsünde önceden oluşturulmuş veri uygulamasını
/system/priv-app
Tapas tarafından oluşturulan önceden oluşturulmuş APK'ları dahil etmek için
sistem görüntüsünde yoksa OEM'ler örnek dosyaları sistem görüntüsüne
packages/apps/TimeZoneData/oem_template/data_app_prebuilt
İlgili içeriği oluşturmak için kullanılan
örnek şablonlar,
Test paketlerinde veri uygulaması.
Güncelleyici ve Veri uygulamalarını sistem görüntüsüne ekle
OEM'ler, Güncelleyici ve Veri uygulaması APK'larını
Sistem görüntüsünün /system/priv-app
dizini. Bunu yapmak için
sistem görüntüsü derlemesi, Güncelleyici uygulamasını ve önceden oluşturulmuş Veri uygulamasını açıkça içermelidir.
belirler.
Güncelleyici uygulaması, platform anahtarıyla imzalanmalı ve
başka sistem uygulaması. Hedef şu şekilde tanımlanır:
TimeZoneUpdater
olarak packages/apps/TimeZoneUpdater
. İlgili içeriği oluşturmak için kullanılan
Veri uygulamalarına dahil etme işlemi OEM'ye özgüdür ve web sitesi için seçilen hedef ada bağlıdır.
yardımcı olur.
Sistem sunucusunu yapılandırma
OEM'ler, saat dilimi güncellemelerini etkinleştirmek için sistem sunucusunu
şunda tanımlanan yapılandırma özelliklerini geçersiz kılmayı deneyin:
frameworks/base/core/res/res/values/config.xml
Özellik | Açıklama | Geçersiz Kılma Zorunlu mu? |
---|---|---|
config_enableUpdateableTimeZoneRules |
Kural Yöneticisi Hizmeti'ni etkinleştirmek için true olarak ayarlanmalıdır. |
Evet |
config_timeZoneRulesUpdateTrackingEnabled |
Sistemin yapılan değişiklikleri dinlemesi için true olarak ayarlanmalıdır
Veri uygulaması. |
Evet |
config_timeZoneRulesDataPackage |
OEM'ye özgü veri uygulamasının paket adı. | Evet |
config_timeZoneRulesUpdaterPackage |
Varsayılan Güncelleyici uygulaması için yapılandırılır. Yalnızca bir farklı bir Güncelleyici uygulaması uygulaması. | Hayır |
config_timeZoneRulesCheckTimeMillisAllowed |
Bir güncelleme kontrolünün RulesManagerService ve yükleme, kaldırma veya hiçbir işlem yapma yanıtı. Şu tarihten sonra: bu noktada spontane bir güvenilirlik tetikleyicisi oluşturulabilir. | Hayır |
config_timeZoneRulesCheckRetryCount |
tarihinden önce izin verilen sıralı başarısız güncelleme kontrollerinin sayısı Kural Yöneticisi Hizmeti daha fazla öğe oluşturmayı durduruyor. | Hayır |
Yapılandırma geçersiz kılmaları, sistem görüntüsünde olmalıdır (tedarikçi firma veya diğer kaynaklarda değil) cihaz başlatılmayı reddedebilir. Yapılandırma, tedarikçi imajında olduğundan, Veri uygulaması olmadan bir sistem görüntüsüne güncelleniyordu (veya veri uygulaması/güncelleyici uygulama paketi adlarına sahip olan tüm uygulamalar) bir hata neden olur.
xTS testi
xTS, standart Android'e benzeyen, OEM'e özel tüm test paketlerini ifade eder Tradefed (CTS ve VTS gibi) kullanan test paketleri. Bu tür testlere sahip OEM'ler paketleri, aşağıdaki konumlarda sağlanan Android saat dilimi güncelleme testlerini ekleyebilir yerler:
- Kod
packages/apps/TimeZoneData/testing/xts
içeriyor temel otomatik işlevsel test için gereklidir. packages/apps/TimeZoneData/oem_template/xts
bir örnek içeriyor Tradefed benzeri bir xTS paketine test eklemek için kullanılan dizin yapısı. Olduğu gibi diğer şablon dizinlerini izlerseniz, OEM'lerin kendi gerekiyor.packages/apps/TimeZoneData/oem_template/data_app_prebuilt
. gerekli önceden oluşturulmuş test APK'larını dahil etmek için derleme zamanı yapılandırması içerir yardımcı olur.
Saat dilimi güncellemeleri oluşturma
IANA yeni bir saat dilimi kuralı kümesi yayınladığında Android temel kitaplıkları ekibi AOSP'de sürümleri güncellemek için yama oluşturur. Stok Android kullanan OEM'ler sistem ve distro dosyaları bu kayıtları alabilir. Bunları yeni bir verilerini güncellemez, sonra cihazlarını güncellemek için yeni sürümü yayınlar emin olabilirsiniz.
Veri uygulamaları, Android sürümleriyle yakından ilişkili dağıtım dosyaları içerdiğinden, OEM'ler, desteklenen her cihaz için veri uygulamasının yeni bir sürümünü oluşturmalıdır Bir OEM'in güncellemek istediği Android sürümü. Örneğin, bir OEM Android 8.1, 9 ve 10 için güncelleme sağlama bu işlemi üç kez tamamlamaları gerekir.
1. Adım: Sistem/saat dilimi ve harici/icu veri dosyalarını güncelleyin
Bu adımda, OEM'ler Google tarafından sağlanan
Şuradan system/timezone
ve external/icu
:
AOSP'de release-dev dallarını kullanabilir ve bu taahhütleri
Android kaynak kodu.
Sistem/saat dilimi AOSP yaması, güncellenen dosyaları şurada içerir:
system/timezone/input_data
ve
system/timezone/output_data
. Daha fazla yerel ürün geliştirmesi gereken OEM'ler
giriş dosyalarını değiştirebilir ve ardından, bu dosyaların
system/timezone/input_data
ve external/icu
-
output_data
içinde dosya oluştur.
En önemli dosya,
system/timezone/output_data/distro/distro.zip
, yani
Veri uygulaması APK'sı oluşturulduğunda otomatik olarak dahil edilir.
2. Adım: Veri uygulamasının sürüm kodunu güncelleyin
OEM'ler bu adımda veri uygulamasının sürüm kodunu günceller. Derleme
distro.zip
otomatik olarak alınır, ancak
Veri uygulamasının yeni olarak tanınması ve şu işlemlerde kullanılması için yeni bir sürüm kodu olmalıdır:
Önceden yüklenmiş bir Veri uygulamasını veya cihazda yüklü bir Veri uygulamasını önceki bir
güncelleyin.
Kopyalanan dosyaları kullanarak Veri uygulamasını oluştururken
package/apps/TimeZoneData/oem_template/data_app
,
Android.mk
içinde APK'ya uygulanan sürüm kodu/sürüm adı:
TIME_ZONE_DATA_APP_VERSION_CODE := TIME_ZONE_DATA_APP_VERSION_NAME :=
Benzer girişler testing/Android.mk
içinde bulunabilir (ancak
test sürüm kodları, sistem görüntü sürümünden yüksek olmalıdır). Ayrıntılı bilgi için
örnek sürüm kodu stratejisini inceleyin
şema; örnek şema veya benzer bir şema kullanılırsa test
sürüm kodlarının güncellenmesine gerek yoktur, çünkü bu kodların daha yüksek
daha iyi hale getirebilirsiniz.
3. adım: Yeniden oluşturun, imzalayın, test edin ve yayınlayın
Bu adımda OEM'ler tapas kullanarak APK'yı yeniden oluşturur, oluşturulan APK'yı test edin, ardından APK'yı test edin ve yayınlayın:
- Piyasaya sunulmamış cihazlar için (veya yayınlanan bir cihazda), yeni APK'ları Veri uygulaması önceden oluşturulmuş dizinine gönderin inceleyerek sistem görüntüsü ve xTS testlerinin en son APK'lara sahip olduğundan emin olun. OEM’ler düzgün çalışıp çalışmadığını test eder (yani CTS'yi OEM'e özel otomatik ve manuel testler) kullanabilirsiniz.
- Yayınlanmış ve artık sistem güncellemelerini almayan cihazlar için imzalı APK yalnızca bir uygulama mağazasında yayınlanabilir.
Kalite güvencesi ve güncellenmiş ürünlerin test edilmesinden OEM’ler Veri uygulaması yayınlanmadan önce,
Veri uygulaması sürüm kod stratejisi
Veri uygulamasında bir uygun sürüm oluşturma stratejisini kontrol edin. Örneğin, Örneğin, daha eski bir APK içeren sistem güncellemesi alınırsa uygulama mağazasından indirdiyseniz uygulama mağazasındaki sürüm saklanmalıdır.
APK sürüm kodu aşağıdaki bilgileri içermelidir:
- Distro biçim sürümü (ana + alt)
- Artan (opak) sürüm numarası
Şu anda platform API düzeyi ile dağıtım biçimindeki sürüm arasında yakın bir ilişki vardır çünkü her API düzeyi genellikle ICU'nun yeni bir sürümüyle dağıtım dosyalarını uyumsuz hale getirir). Gelecekte Android, bu durumu değiştirerek birden çok Android platformu sürümünde (ve API) düzeyi, veri uygulaması sürüm kod şemasında kullanılmaz).
Örnek sürüm kodu stratejisi
Bu örnek sürüm oluşturma sayı şeması, yüksek dağıtım biçiminin
sürümleri, daha düşük dağıtım biçimli sürümlerin yerini alır.
AndroidManifest.xml
, şu işlemler için android:minSdkVersion
kullanıyor:
eski cihazların daha yüksek dağıtım biçimine sahip sürümleri almadığından emin olun
çok daha zor olacaktır.
6. Şekil. Örnek sürüm kodu stratejisi.
Örnek | Değer | Amaç |
---|---|---|
E | Rezervasyon yapıldı | Gelecekteki alternatif şemalara/test APK'larına izin verir. Bu, başlangıçta (dolaylı olarak) 0 Temel tür, imzalı 32 bit int türü olduğundan bu şema, iki taneye kadar numaralandırma şeması düzeltmesi. |
01 | Ana biçim sürümü | 3 ondalık basamaklı ana biçim sürümünü izler. Distro biçimi, Burada 3 ondalık basamak ancak yalnızca 2 basamak kullanılır. 100'e ulaşmak pek olası değil. her API seviyesi için beklenen büyük artışa göre hesaplanır. Ana sürüm 1 eşdeğerdir API düzeyi 27'ye. |
1 | Alt biçim sürümü | 3 ondalık basamak içeren alt biçimli sürümü izler. Distro biçimi, 3 ondalık basamak, ancak burada yalnızca 1 basamak kullanılır. 10 rakama ulaşması pek olası değildir. |
X | Rezervasyon yapıldı | Üretim sürümleri için 0'dır (ve test APK'larından farklı olabilir). |
ZZZZZ | Opak sürüm numarası | İstek üzerine ayrılan ondalık sayı. Geçiş reklamlarına izin veren boşluklar içeriyor veya gerekiyorsa yapılacak güncellemeler. |
Ondalık yerine ikili kullanılsaydı şema daha iyi paketlenebilirdi, ancak bu şemanın, kullanıcılar tarafından okunabilmesi avantajı vardır. Tam sayı aralığı tükendiyse, Veri uygulaması paketinin adı değişebilir.
Sürüm adı, sürüm adının kullanıcılar tarafından okunabilecek şekilde
örnek: major=001,minor=001,iana=2017a, revision=1,respin=2
.
Örnekler aşağıdaki tabloda gösterilmiştir.
# | Sürüm kodu | minSdkSürümü | {Ana biçim sürümü},{Küçük biçim sürümü},{IANA kuralları version},{Düzeltme} |
---|---|---|---|
1 | 11000010 | O-MR1 | ana=001,minor=001,iana=2017a,düzeltme=1 |
2 | 21000010 | P | ana=002,minor=001,iana=2017a,düzeltme=1 |
3 | 11000020 | O-MR1 | ana=001,minor=001,iana=2017a,düzeltme=2 |
4 | 11000030 | O-MR1 | ana=001,minor=001,iana=2017b,düzeltme=1 |
5 | 21000020 | P | ana=002,minor=001,iana=2017b,düzeltme=1 |
6 | 11000040 | O-MR1 | ana=001,minor=001,iana=2018a,düzeltme=1 |
7 | 21000030 | P | ana=002,minor=001,iana=2018a,düzeltme=1 |
8 | 1123456789 | - | - |
9 | 11000021 | O-MR1 | ana=001,minor=001,iana=2017a,düzeltme=2,respin=2 |
- 1. ve 2. Örneklerde, aynı 2017a IANA sürümüne ait iki APK sürümü gösterilmektedir farklı ana format sürümleri kullanabilirsiniz. 2, sayısal olarak 1'den yüksektir. yeni cihazların daha yüksek biçimli sürümleri almasını sağlamak için gereklidir. İlgili içeriği oluşturmak için kullanılan minSdkVersion, O cihazlara P sürümünün sağlanmamasını sağlar.
- 3. Örnek, 1 için bir düzeltme/düzeltme olup sayısal olarak 1'den yüksektir.
- 4 ve 5. örnekler, O-MR1 ve P'nin 2017b sürümlerini göstermektedir. Sayısal olmak ilgili IANA sürümlerinin/Android revizyonlarının yerini alırlar. öncülleri.
- 6 ve 7. örneklerde, O-MR1 ve P'nin 2018a sürümleri gösterilmektedir.
- 8. Örnek, Y=0 şemasının tamamen yerine geçmek için Y kullanımını göstermektedir.
- 9. Örnek, yeniden sabitlemek için 3 ile 4 arasında kalan boşluğun kullanımını göstermektedir değil.
Her cihaz varsayılan, uygun şekilde sürümü oluşturulmuş bir APK ile gönderildiğinden
P cihaza O-MR1 sürümünün yüklü olma riski yoktur.
çünkü P sisteminin görüntü sürümünden daha düşük bir sürüm numarasına sahip. CEVAP
/data
içinde O-MR1 sürümü yüklü olan ve daha sonra alan
P'ye yapılan bir sistem güncellemesinde, /system
sürümü
P sürümü her zaman daha yüksek olduğundan /data
içindeki O-MR1 sürümü
%38'e varan oranda artış gördük.
Tapas kullanarak Data uygulaması oluşturma
OEM'ler, saat dilimi veri uygulamasının çoğu bölümünün yönetiminden, yapılandırdığınızdan emin olun. Veri uygulaması geliştirilmek üzere tasarlandı Eklenebilecek APK'lar üreten bir tapas derlemesi ile sistem görüntüsü (ilk sürüm için) olmalı ve bir uygulama mağazası (sonraki güncellemeler için)
Tapas, Android yapısının azaltılmış bir sürümüdür. dağıtılabilir versiyonlarını üretmek için azaltılmış kaynak ağacı kullanan bir sistemdir. Normal Android derleme sistemine aşina olan OEM'ler, dosyaları oluşturmak için bu dosyayı kullanabilirsiniz.
Manifest dosyasını oluşturma
Kaynak ağacı, genellikle indirgenmiş bir kaynak ağacına, genellikle
derleme sistemi için gereken Git projelerini ifade eder.
uygulamasını indirin. Şuradaki talimatları uyguladıktan sonra:
Veri uygulaması oluşturmak isteyen OEM'lerin,
OEM'e özel en az iki Git projesi kullanılarak oluşturulmuş
packages/apps/TimeZoneData/oem_template
:
- Bir Git projesinde manifest ve
oluşturmak için gereken derleme dosyalarını (örneğin,
vendor/oem/apps/TimeZoneData
) bilgileri gösterilir. Bu proje ayrıca xTS testleri tarafından kullanılabilecek test APK'ları için derleme kuralları içerir. - Bir Git projesi, ve xTS testlerine dahil edilmesi gerekir.
Uygulama derlemesi, platform derlemesi olmalıdır veya OEM'den bağımsız kod kitaplıkları içerir.
Aşağıdaki manifest snippet'i, en az sayıda Git projesi içerir saat dilimi Data uygulamasının O-MR1 derlemesini desteklemek için gereklidir. OEM'ler OEM'ye özgü Git projelerini eklemelidir (genellikle içerir) ekleyebilirsiniz ve farklı yapılandırmalar dallarını buna göre belirleyebilirsiniz.
<!-- Tapas Build --> <project path="build" name="platform/build"> <copyfile src="core/root.mk" dest="Makefile" /> </project> <project path="prebuilts/build-tools" name="platform/prebuilts/build-tools" clone-depth="1" /> <project path="prebuilts/go/linux-x86" name="platform/prebuilts/go/linux-x86" clone-depth="1" /> <project path="build/blueprint" name="platform/build/blueprint" /> <project path="build/kati" name="platform/build/kati" /> <project path="build/soong" name="platform/build/soong"> <linkfile src="root.bp" dest="Android.bp" /> <linkfile src="bootstrap.bash" dest="bootstrap.bash" /> </project> <!-- SDK for system / public API stubs --> <project path="prebuilts/sdk" name="platform/prebuilts/sdk" clone-depth="1" /> <!-- App source --> <project path="system/timezone" name="platform/system/timezone" /> <project path="packages/apps/TimeZoneData" name="platform/packages/apps/TimeZoneData" /> <!-- Enable repohooks --> <project path="tools/repohooks" name="platform/tools/repohooks" revision="main" clone_depth="1" /> <repo-hooks in-project="platform/tools/repohooks" enabled-list="pre-upload" />
Tapas yapısını çalıştırın
Kaynak ağacı oluşturulduktan sonra tapas derlemesini çağırın kullanarak şunları yapabilirsiniz:
source build/envsetup.sh
tapas
make -j30 showcommands dist TARGET_BUILD_APPS='TimeZoneData TimeZoneData_test1 TimeZoneData_test2' TARGET_BUILD_VARIANT=userdebug
Başarılı bir derleme, out/dist
dizininde
teşvik etmek anlamına gelir. Bu dosyalar, dizine eklenmek üzere önceden oluşturulmuş dizine
uyumlu olması için sistem görüntüsünün ve/veya bir uygulama mağazasından dağıtılmasını
cihazlar.