Google 致力于为黑人社区推动种族平等。查看具体举措
此页面由 Cloud Translation API 翻译。
Switch to English

A / B Olmayan Sistem Güncellemeleri

A / B bölümleri olmayan eski Android cihazlarda, flash alanı genellikle aşağıdaki bölümleri içerir:

çizme
Linux çekirdeğini ve minimum bir kök dosya sistemini içerir (bir RAM diske yüklenir). Sistemi ve diğer bölümleri bağlar ve sistem bölümünde bulunan çalışma zamanını başlatır.
sistemi
Android Açık Kaynak Projesi'nde (AOSP) kaynak kodu bulunan sistem uygulamalarını ve kitaplıkları içerir. Normal çalışma sırasında, bu bölüm salt okunur olarak monte edilir; içeriği yalnızca bir OTA güncellemesi sırasında değişir.
SATICI
Android Açık Kaynak Projesi (AOSP) geçerli kaynak kodu bulunmayan sistem uygulamaları ve kütüphaneleri içerir. Normal çalışma sırasında, bu bölüm salt okunur olarak monte edilir; içeriği yalnızca bir OTA güncellemesi sırasında değişir.
Kullanıcı bilgisi
Kullanıcı vb. Tarafından yüklenen uygulamalar tarafından kaydedilen verileri depolar. Bu bölüme normalde OTA güncelleme işlemi tarafından dokunulmaz.
önbellek
Birkaç uygulama tarafından kullanılan geçici tutma alanı (bu bölüme erişmek özel uygulama izinleri gerektirir) ve indirilen OTA güncelleme paketlerinin depolanması için. Diğer programlar, dosyaların herhangi bir zamanda kaybolabileceği beklentisiyle bu alanı kullanır. Bazı OTA paketi kurulumları, bu bölümün tamamen silinmesine neden olabilir. Önbellek ayrıca bir OTA güncellemesinden gelen güncelleme günlüklerini içerir.
kurtarma
Bir çekirdek ve bir paketi okuyan ve içeriğini diğer bölümleri güncellemek için kullanan özel kurtarma ikili dosyası dahil olmak üzere ikinci bir tam Linux sistemi içerir.
çeşitli
OTA paketi uygulanırken aygıtın yeniden başlatılması durumunda ne yaptığı hakkında bazı bilgileri saklamak için kurtarma tarafından kullanılan küçük bölüm.

OTA güncellemesinin ömrü

Tipik bir OTA güncellemesi aşağıdaki adımları içerir:

  1. Cihaz, OTA sunucuları ile düzenli kontrol gerçekleştirir ve güncelleme paketinin URL'si ve kullanıcıyı göstermek için bir açıklama dizesi dahil olmak üzere bir güncellemenin kullanılabilirliği konusunda bilgilendirilir.
  2. İndirmeleri bir önbelleğe veya veri bölümüne güncelleyin ve şifreleme imzası /system/etc/security/otacerts.zip içindeki sertifikalara göre doğrulanır. Kullanıcıdan güncellemeyi yüklemesi istenir.
  3. Aygıt, önyükleme bölümünde çekirdek yerine kurtarma bölümündeki çekirdek ve sistemin önyüklendiği kurtarma modunda yeniden başlatılır.
  4. Kurtarma ikili dosyası init tarafından başlatılır. İndirilen pakete işaret eden /cache/recovery/command içinde komut satırı argümanlarını bulur.
  5. Kurtarma, paketin kriptografik imzasını /res/keys (kurtarma bölümünde bulunan RAM diskinin bir parçası) genel anahtarlara göre doğrular.
  6. Veriler paketten alınır ve gerektiğinde önyükleme, sistem ve / veya satıcı bölümlerini güncellemek için kullanılır. Sistem bölümünde kalan yeni dosyalardan biri, yeni kurtarma bölümünün içeriğini içerir.
  7. Cihaz normal şekilde yeniden başlatılıyor.
    1. Yeni güncellenen önyükleme bölümü yüklenir ve yeni güncellenen sistem bölümüne bağlanır ve ikili dosyaları çalıştırmaya başlar.
    2. Normal başlatmanın bir parçası olarak, sistem kurtarma bölümünün içeriğini istenen içeriklerle (önceden /system içinde bir dosya olarak saklanan) karşılaştırarak kontrol eder. Farklıdırlar, bu nedenle kurtarma bölümü istenen içerikle yeniden başlatılır. (Sonraki önyüklemelerde, kurtarma bölümü zaten yeni içeriği içerir, bu nedenle yeniden başlatma gerekmez.)

Sistem güncellemesi tamamlandı! Güncelleme günlükleri /cache/recovery/last_log. # .

Paketleri güncelle

Güncelleme paketi, yürütülebilir ikili META-INF/com/google/android/update-binary içeren bir .zip dosyasıdır. Paketteki imzayı doğruladıktan sonra, recovery bu ikiliyi /tmp çıkarır ve aşağıdaki bağımsız değişkenleri ileterek ikili dosyayı çalıştırır:

  • İkili API sürüm numarasını güncelleyin . Güncelleştirme ikilisine iletilen argümanlar değişirse, bu sayı artar.
  • Komut kanalının dosya tanımlayıcısı . Güncelleme programı, komutları kurtarma ikili programına geri göndermek için, çoğunlukla kullanıcıya ilerlemeyi göstermek gibi UI değişiklikleri için bu boruyu kullanabilir.
  • Güncelleme paketi .zip dosyasının dosya adı .

Bir güncelleme paketi, herhangi bir statik bağlantılı ikili dosyayı güncelleme ikili dosyası olarak kullanabilir. OTA paketi oluşturma araçları, birçok kurulum görevini yerine getirebilen basit bir komut dosyası dili sağlayan güncelleyici programı ( bootable/recovery/updater ) kullanır. Cihazda çalışan diğer herhangi bir ikili dosyayı değiştirebilirsiniz.

Güncelleyici ikili dosyası, sözdizimini düzenleme ve yerleşik işlevlerle ilgili ayrıntılar için bkz. OTA Paketlerinin İçinde .

Önceki sürümlerden geçiş

Android 2.3 / 3.0 / 4.0 sürümünden geçiş yapılırken, en büyük değişiklik, cihaza özgü tüm işlevlerin önceden tanımlanmış adlara sahip bir dizi C işlevinden C ++ nesnelerine dönüştürülmesidir. Aşağıdaki tablo, kabaca eşdeğer bir amaca hizmet eden eski işlevleri ve yeni yöntemleri listeler:

C işlevi C ++ yöntemi
device_recovery_start () Aygıt :: RecoveryStart ()
device_toggle_display ()
device_reboot_now ()
RecoveryUI :: CheckKey ()
(ayrıca RecoveryUI :: IsKeyPressed ())
device_handle_key () Aygıt :: HandleMenuKey ()
device_perform_action () Device :: InvokeMenuItem ()
device_wipe_data () Aygıt :: WipeData ()
device_ui_init () ScreenRecoveryUI :: Init ()

Eski işlevlerin yeni yöntemlere dönüştürülmesi oldukça basit olmalıdır. Yeni Aygıt alt sınıfınızın bir örneğini oluşturmak ve geri döndürmek için yeni make_device() işlevini eklemeyi unutmayın.