OTA paketleri oluşturma

A/B sistem güncellemeleri veya A/B dışındaki sistem güncellemeleri kullanan cihazlar için tam ve artımlı OTA paketleri oluşturmak üzere build/make/tools/releasetools'da sağlanan ota_from_target_files aracını kullanabilirsiniz. Araç, Android derleme sistemi tarafından oluşturulan target-files.zip dosyası giriş olarak.

Android 11 veya sonraki sürümleri çalıştıran cihazlar için farklı SKU'lara sahip birden fazla cihaz için tek bir OTA paketi oluşturabilirsiniz. Bunu yapmak için hedef cihazları dinamik parmak izleri kullanacak şekilde yapılandırmanız ve OTA meta verilerini ön ve son koşul girişlerine cihaz adını ve parmak izini içerecek şekilde güncellemeniz gerekir.

Android 8.0, A/B dışı cihazlar için dosya tabanlı OTA paketleri desteğini sonlandırmıştır. blok tabanlı OTA paketleri kullanın. Alıcı: blok tabanlı OTA paketleri veya Android 7.x veya önceki sürümleri çalıştıran cihazlar için kart oluşturma ota_from_target_files parametresine --block seçeneği eklendi.

Tam güncellemeler oluşturma

Tam güncelleme, dokümanın son durumunu içeren bir OTA paketidir: (sistem, başlatma ve kurtarma bölümleri). Cihaz paketi alıp uygulayabiliyorsa paket, cihazın mevcut durumundan bağımsız olarak derlemeyi yükleyebilir. Örneğin, komutlarının target-files.zip arşivini oluşturmak için sürüm araçlarını tardis cihaz.

. build/envsetup.sh && lunch tardis-eng
mkdir dist_output
make dist DIST_DIR=dist_output

make dist, eksiksiz bir OTA paketi oluşturur ($OUT içinde). Sonuçta oluşan .zip dosyası tardis cihaz için OTA paketleri oluşturmak amacıyla gereken her şeyi içerir. Ayrıca ota_from_target_files öğesini bir python ikili programı olarak derleyebilir ve tam veya artımlı paket derleyebilirsiniz.

ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip

ota_from_target_files yolu $PATH içinde ayarlanır ve oluşturulan Python ikili dosyası out/ dizininde bulunur.

ota_update.zip artık test cihazlarına gönderilmeye hazır (her şey imzalandı) . Kullanıcı cihazlarında kendi özel anahtarlarınızı oluşturup Yayınlanacak derlemeleri imzalama bölümünde ayrıntılı olarak açıklanmıştır.

Artımlı güncellemeler oluşturma

Ek güncelleme, verilere ikili yamalar içeren bir OTA paketidir bu cihazdadır. Artımlı güncellemeleri olan paketler genellikle daha küçüktür çünkü değiştirilmemiş dosyaları dahil etmeleri gerekmez. Ayrıca, değiştirilen dosyalar çoğu zaman önceki sürümlerine çok benzer. Ancak paketin yalnızca koda ekleyebilirsiniz.

Artımlı güncelleme paketi yalnızca paketin oluşturulmasında kullanılan kaynak derlemesi. Artımlı bir güncelleme oluşturmak için önceki derlemedeki (istediğiniz sürümdeki) target_files.zip dosyasına (from) dosyasının yanı sıra yeni derlemenin target_files.zip dosyasını yükleyin. Örneğin, Örneğin, aşağıdaki komutlar artımlı bir güncelleme oluşturmak için yayınlama araçlarını kullanır tardis cihaz için.

ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip

Bu derleme önceki derlemeye çok benzer ve artımlı güncelleme paket (incremental_ota_update.zip), karşılık gelen paketten çok daha küçük tam güncelleme (60 MB yerine yaklaşık 1 MB).

Artımlı paketi yalnızca artımlı paketin başlangıç noktası olarak kullanılan önceki derlemeyle tam olarak aynı derlemeyi çalıştıran cihazlara dağıtın. Yanıp söndürmeniz gerekiyor PREVIOUS-tardis-target_files.zip veya PREVIOUS-tardis-img.zip klasöründeki resimler (her ikisi de make dist ile oluşturulmuştur, fastboot update ile desteklenecektir), PRODUCT_OUT dizini altındakiler (make ile oluşturulmuş ve şu andan itibaren) fastboot flashall ile yanıp söndü). Artımlı paket yüklenmeye çalışılıyor yüklü olduğu için yükleme hatası veriyor. başarısız olursa cihazın çalışma durumu değişmeden kalır (eski sistemi; paket, güncellediği tüm dosyaların önceki durumunu doğrular Böylece, cihaz yarı yükseltilmiş durumda mahsur kalmaz.

En iyi kullanıcı deneyimi için her 3-4 artımlı güncellemede bir tam güncelleme sunun. Bu sayede kullanıcılar en son sürüme geçebilir ve artımlı güncellemelerin uzun yükleme sırasını atlayabilir.

Birden fazla SKU için OTA paketleri oluşturma

Android 11 veya sonraki sürümler, farklı SKU'lara sahip birden fazla cihaz için tek bir OTA paketinin kullanılmasını destekler. Bunu yapmak için hedef cihazları dinamik parmak izleri kullanacak şekilde yapılandırmanız ve OTA meta verilerini (OTA araçlarını kullanarak) koşul öncesi ve sonrası girişlerine cihaz adını ve parmak izini içerecek şekilde güncellemeniz gerekir.

SKU'lar hakkında

SKU biçimi, birleşik derlemenin bir varyasyonudur. parametre değerleri ve genellikle geçerli build_fingerprint parametrelerinin bildirilmemiş bir alt kümesidir. OEM'ler, aynı zamanda bir SKU için CDD onaylı derleme parametrelerinin herhangi bir kombinasyonunu tek bir resim kullanılmasıdır. Örneğin aşağıdaki SKU birden çok varyasyon:

SKU = <product><device><modifierA><modifierB><modifierC>
  • modifierA, cihaz düzeyindedir (ör. Pro, Premium veya Plus)
  • modifierB, donanım varyantıdır (ör. radyo)
  • modifierC, genel (ör. NA, EMEA veya CHN) ya da ülkeye ya da dile özel (ör. JPN, ENG veya CHN) olabilen bölgedir.

Birçok OEM, birden fazla SKU için tek bir resim kullanır ve ardından ürünün adı ve cihaz parmak izini gösterir. Bu işlem, platform geliştirme sürecini basitleştirerek küçük özelleştirmelere sahip ancak farklı ürün adlarına sahip cihazların ortak resimleri (tardis ve tardispro gibi) paylaşmasına olanak tanır.

Dinamik parmak izleri kullanma

Parmak izi, ro.product.brand, ro.product.name ve ro.product.device gibi derleme parametrelerinin tanımlanmış bir birleşimidir. Bir cihazın parmak izi, sistem bölümü parmak izinden türetilir ve cihazda çalışan resimlerin (ve baytların) benzersiz tanımlayıcı olarak kullanılır. Dinamik bir parmak izi oluşturmak için cihazın build.prop dosyasında dinamik mantık kullanarak cihazın önyükleme sırasındaki önyükleme programı değişkenlerinin değerini alın, ardından bu verileri kullanarak cihaz için dinamik bir parmak izi oluşturun.

Örneğin, tardis ve tardispro cihazlarda dinamik parmak izleri kullanmak için aşağıdaki dosyaları aşağıda gösterildiği şekilde güncelleyin.

  • odm/etc/build_std.prop dosyasını aşağıdaki satırı içerecek şekilde güncelleyin.

    ro.odm.product.device=tardis
    
  • odm/etc/build_pro.prop dosyasını aşağıdaki satırı içerecek şekilde güncelleyin.

    ro.odm.product.device=tardispro
    
  • odm/etc/build.prop dosyasını aşağıdaki satırları içerecek şekilde güncelleyin.

    ro.odm.product.device=tardis
    import /odm/etc/build_${ro.boot.product.hardware.sku}.prop
    

Bu satırlar, cihaz adını, parmak izini ve dijital parmak izini Değerine dayalı olarak ro.build.fingerprint değerleri ro.boot.product.hardware.sku bootloader özelliği (salt okunur).

OTA paketi meta verilerini güncelleme

OTA paketi, OTA paketinin ön koşulu ve son koşulu da dahil olmak üzere paketi açıklayan bir meta veri dosyası (META-INF/com/android/metadata) içerir. Örneğin, aşağıdaki kod bir OTA paketinin meta veri dosyasıdır tardis cihazı hedefliyor.

post-build=google/tardis/tardis:11/RP1A.200521.001/6516341:userdebug/dev-keys
post-build-incremental=6516341
post-sdk-level=30
post-security-patch-level=2020-07-05
post-timestamp=1590026334
pre-build=google/tardis/tardis:11/RP1A.200519.002.A1/6515794:userdebug/dev-keys
pre-build-incremental=6515794
pre-device=tardis

pre-device, pre-build-incremental ve pre-build değerleri, OTA paketinin yüklenebilmesi için cihazın sahip olması gereken durumu tanımlar. post-build-incremental ve post-build değerleri, OTA paketi yüklendikten sonra cihazın sahip olması beklenen durumu tanımlar. pre- ve post- alanlarının değerleri, aşağıdaki ilgili derleme özelliklerinden türetilir.

  • pre-device değeri, ro.product.device derleme mülkünden türetilir.
  • pre-build-incremental ve post-build-incremental değerleri türetilir ro.build.version.incremental derleme mülkünden.
  • pre-build ve post-build değerleri, ro.build.fingerprint derleme mülkünden türetilir.

Android 11 veya sonraki sürümleri çalıştıran cihazlarda, cihazın dinamik parmak izini oluşturmak için kullanılan çalışma zamanı değişkenlerinin değerlerini içeren bir dosyanın yolunu belirtmek üzere OTA araçlarındaki --boot_variable_file işaretini kullanabilirsiniz. Bu veriler daha sonra OTA meta verilerini güncelleyerek pre- ve post- koşullarında ( dikey çizgi karakteri | ayırıcı olarak kullanılır). --boot_variable_file işareti dikkat edin.

  • Sözdizimi: --boot_variable_file <path>
  • Açıklama: ro.boot.* mülk. Olası çalışma zamanı parmak izlerini hesaplamak için kullanılır bazı ro.product.* özellikleri içe aktarma ifadesi tarafından geçersiz kılındığında. Dosyada, her satırın aşağıdaki biçime sahip olduğu her satırda bir mülk beklenir: prop_name=value1,value2.

Örneğin, mülk ro.boot.product.hardware.sku=std,pro olduğunda tardis ve tardispro cihazları için OTA meta verileri aşağıda gösterildiği gibidir.

post-build=google/tardis/tardis:11/<suffix>|google/tardis/tardispro:11/<suffix>
pre-build=google/tardis/tardis:11/<suffix>|google/tardis/tardispro:11/<suffix>
pre-device=tardis|tardispro

Bu işlevin Android 10 yüklü cihazlarda desteklenmesi için referans bölümüne bakın hakkında daha fazla bilgi edinin. Bu değişiklik listesi, build.prop içindeki import ifadelerini koşullu olarak ayrıştırır dosyası oluşturur. Bu dosya, özellik geçersiz kılma işlemlerinin nihai OTA meta verileri