A/B bölümleri olmayan eski Android cihazlarda flash alanı genellikle aşağıdaki bölümleri içerir:
- bot
- Linux çekirdeğini ve minimum kök dosya sistemini (RAM diskine yüklenmiş) içerir. Sistemi ve diğer bölümleri bağlar ve sistem bölümünde bulunan çalışma zamanını başlatır.
- sistem
- Android Açık Kaynak Projesinde (AOSP) kaynak kodu bulunan sistem uygulamalarını ve kitaplıklarını içerir. Normal çalışma sırasında bu bölüm salt okunur olarak bağlanır; içeriği yalnızca OTA güncellemesi sırasında değişir.
- SATICI
- Android Açık Kaynak Projesinde (AOSP) kaynak kodu bulunmayan sistem uygulamalarını ve kitaplıklarını içerir. Normal çalışma sırasında bu bölüm salt okunur olarak bağlanır; içeriği yalnızca OTA güncellemesi sırasında değişir.
- Kullanıcı bilgisi
- Kullanıcı tarafından yüklenen uygulamalar vb. tarafından kaydedilen verileri saklar. Bu bölüme normalde OTA güncelleme işlemi tarafından dokunulmaz.
- önbellek
- Birkaç uygulama tarafından kullanılan (bu bölüme erişim özel uygulama izinleri gerektirir) ve indirilen OTA güncelleme paketlerinin depolanması için kullanılan geçici saklama alanı. Diğer programlar bu alanı dosyaların herhangi bir zamanda kaybolabileceği beklentisiyle 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 de içerir.
- iyileşmek
- Bir çekirdek ve bir paketi okuyan ve içeriğini diğer bölümleri güncellemek için kullanan özel kurtarma ikili programı da dahil olmak üzere ikinci bir eksiksiz Linux sistemi içerir.
- çeşitli
- Kurtarma tarafından, OTA paketi uygulanırken cihazın yeniden başlatılması durumunda ne yaptığına ilişkin bazı bilgileri saklamak için kullanılan küçük bölüm.
OTA güncellemesinin ömrü
Tipik bir OTA güncellemesi aşağıdaki adımları içerir:
- Cihaz, OTA sunucularında düzenli olarak check-in gerçekleştirir ve güncelleme paketinin URL'si ve kullanıcıya gösterilecek bir açıklama dizesi de dahil olmak üzere bir güncellemenin varlığı konusunda bilgilendirilir.
- İndirmeleri bir önbelleğe veya veri bölümüne güncelleyin ve şifreleme imzası,
/system/etc/security/otacerts.zip
dosyasındaki sertifikalara göre doğrulanır. Kullanıcıdan güncellemeyi yüklemesi istenir. - Cihaz, önyükleme bölümündeki çekirdek yerine kurtarma bölümündeki çekirdek ve sistemin önyüklendiği kurtarma modunda yeniden başlatılır.
- Kurtarma ikili programı init tarafından başlatılır.
/cache/recovery/command
dosyasında onu indirilen pakete yönlendiren komut satırı argümanlarını bulur. - Kurtarma, paketin kriptografik imzasını
/res/keys
(kurtarma bölümünde bulunan RAM diskinin bir parçası) içindeki genel anahtarlara göre doğrular. - 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.
- Cihaz normal şekilde yeniden başlatılıyor.
- Yeni güncellenen önyükleme bölümü yüklenir ve ikili dosyaları yeni güncellenen sistem bölümüne bağlar ve çalıştırmaya başlar.
- Normal başlatmanın bir parçası olarak sistem, kurtarma bölümünün içeriğini istenen içeriklerle (daha önce
/system
dosyasında saklanan) karşılaştırır. Farklıdırlar, bu nedenle kurtarma bölümü istenen içerikle yeniden oluşturulur. (Sonraki önyüklemelerde kurtarma bölümü zaten yeni içerikleri içerir, dolayısıyla yeniden başlatmaya gerek yoktur.)
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 ikili dosyayı /tmp
dosyasına çı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üncelleme ikili dosyasına iletilen bağımsız değişkenler değişirse bu sayı artar.
- Komut kanalının dosya tanımlayıcısı . Güncelleme programı, çoğunlukla kullanıcıya ilerlemeyi belirtmek gibi kullanıcı arayüzü değişiklikleri için komutları kurtarma ikili dosyasına geri göndermek için bu kanalı kullanabilir.
- Güncelleme paketinin dosya adı
.zip
dosyası .
Bir güncelleme paketi, güncelleme ikili dosyası olarak statik olarak bağlı herhangi bir ikili dosyayı kullanabilir. OTA paketi oluşturma araçları, birçok kurulum görevini gerçekleştirebilen basit bir komut dosyası dili sağlayan güncelleyici programı ( bootable/recovery/updater
) kullanır. Cihazda çalışan herhangi bir ikili dosyayı değiştirebilirsiniz.
Güncelleyici ikili programı, düzenleme sözdizimi ve yerleşik işlevlerle ilgili ayrıntılar için OTA Paketlerinin İçinde bölümüne bakın.
Önceki sürümlerden geçiş yapın
Android 2.3/3.0/4.0 sürümünden geçiş sırasında 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 tabloda, kabaca eşdeğer bir amaca hizmet eden eski işlevler ve yeni yöntemler listelenmektedir:
C işlevi | C++ yöntemi |
---|---|
Device_recovery_start() | Cihaz::RecoveryStart() |
Device_toggle_display() Device_reboot_now() | RecoveryUI::CheckKey() (ayrıca RecoveryUI::IsKeyPressed()) |
Device_handle_key() | Cihaz::HandleMenuKey() |
Device_perform_action() | Cihaz::InvokeMenuItem() |
Device_wipe_data() | Cihaz::WipeData() |
Device_ui_init() | ScreenRecoveryUI::Init() |
Eski fonksiyonların yeni yöntemlere dönüştürülmesi oldukça basit olmalıdır. Yeni Device alt sınıfınızın bir örneğini oluşturmak ve döndürmek için yeni make_device()
işlevini eklemeyi unutmayın.