Genel sistem görüntüleri

Genel sistem görüntüsü (GSI), Android cihazlar için ayarlanmış yapılandırmalara sahip bir sistem görüntüsüdür. Android 9 veya üstünü çalıştıran herhangi bir Android cihazının başarıyla çalıştırabileceği, değiştirilmemiş Android Açık Kaynak Projesi (AOSP) koduna sahip saf bir Android uygulaması olarak kabul edilir.

GSI'ler, VTS ve CTS-on-GSI testlerini çalıştırmak için kullanılır. Bir Android cihazının sistem görüntüsü bir GSI ile değiştirilir ve ardından cihazın satıcı arayüzlerini Android'in en son sürümüyle doğru şekilde uyguladığından emin olmak için Satıcı Test Paketi (VTS) ve Uyumluluk Test Paketi (CTS) ile test edilir.

GSI'ları kullanmaya başlamak için, GSI yapılandırmaları (ve izin verilen farklılıklar) ve türleri hakkında ayrıntılar için aşağıdaki bölümleri inceleyin. Bir GSI kullanmaya hazır olduğunuzda, cihaz hedefiniz için GSI'yı indirip oluşturun , ardından GSI'yı bir Android cihaza aktarın .

GSI yapılandırması ve farklılıkları

Mevcut Android GSI aşağıdaki konfigürasyona sahiptir:

Mevcut Android GSI aşağıdaki ana farklılıkları içerir:

  • CPU mimarisi. Farklı CPU talimatları (ARM, x86, vb.) ve CPU bitliği (32 bit veya 64 bit) desteği.

Tiz uyumluluk testleri için GSI hedefleri

Uyumluluk testi için kullanılan GSI, cihazın başlatıldığı Android sürümüne göre belirlenir.

Cihaz tipi Hedef oluştur
Android 12 ile başlatılan cihazlar gsi_$arch-user (İmzalı)
Android 11 ile başlatılan cihazlar gsi_$arch-user (İmzalı)
Android 10 ile başlatılan cihazlar gsi_$arch-user (İmzalı)
Android 9 ile başlatılan cihazlar gsi_$arch-userdebug

Tüm GSI'lar Android 12 kod tabanından oluşturulmuştur ve her CPU mimarisi karşılık gelen bir GSI ikili dosyasına sahiptir ( GSI Oluşturma bölümündeki derleme hedefleri listesine bakın).

Android 12 GSI değişiklikleri

Android 12 ile başlatılan veya bu sürüme güncellenen cihazların uyumluluk testleri için Android 12 GSI'ları kullanması gerekir. Bu, önceki GSI'lara göre aşağıdaki önemli değişiklikleri içerir:

  • Hedef adı. Uyumluluk testleri için GSI hedef adı gsi_$arch olarak değiştirildi. Hedef adı aosp_$arch olan GSI, Android uygulama geliştiricileri için tutulur. CTS-on-GSI test planı da satıcı arayüzünü test etmek için azaltılmıştır.
  • Eski GSI aşamalı olarak kullanımdan kaldırılmıştır. GSI 12, tamamen Treblize edilmemiş Android 8.0 veya 8.1 cihazlarına yönelik geçici çözümleri kaldırır.
  • Kullanıcı hata ayıklama SE Politikası. GSI gsi_$arch userdebug_plat_sepolicy.cil içerir. OEM'e özel vendor_boot-debug.img veya boot-debug.img yanıp sönerken, /system/bin/init GSI system.img dosyasından userdebug_plat_sepolicy.cil yükleyecektir. Ayrıntılar için Ramdisk Hata Ayıklama ile VTS Testine bakın.

Android 11 GSI değişiklikleri

Android 11 ile başlatılan veya bu sürüme güncellenen cihazların uyumluluk testleri için Android 11 GSI'ları kullanması gerekir. Bu, önceki GSI'lara göre aşağıdaki önemli değişiklikleri içerir:

  • system_ext içeriği. Android 11, yeni bir system_ext bölümünü tanımlar. GSI, sistem uzantısı içeriğini system/system_ext klasörünün altına yerleştirir.
  • APEX'ler. GSI hem düzleştirilmiş hem de sıkıştırılmış APEX'ler içerir. Hangisinin kullanılacağı, çalışma zamanında satıcı bölümündeki ro.apex.updatable sistem özelliği tarafından belirlenir. Ayrıntılı bilgi için Sistemin APEX güncellemelerini destekleyecek şekilde yapılandırılması bölümüne bakın.

Android 10 GSI değişiklikleri

Android 10 ile başlatılan veya bu sürüme güncellenen cihazların uyumluluk testleri için Android 10 GSI'ları kullanması gerekir. Bu, önceki GSI'lara göre aşağıdaki önemli değişiklikleri içerir:

  • Kullanıcı yapısı. GSI, Android 10'dan kullanıcı yapısına sahiptir. Android 10'da, kullanıcı yapısı GSI, CTS-on-GSI/VTS uyumluluk testinde kullanılabilir. Ayrıntılar için Ramdisk Hata Ayıklama ile VTS Testine bakın.
  • Ayrıştırılmamış format. aosp_$arch hedefli GSI, ayrıştırılmamış formatta oluşturulmuştur. Gerekirse ayrıştırılmamış bir GSI'yı seyrek formata dönüştürmek için img2simg kullanabilirsiniz.
  • Kök olarak sistem. aosp_$arch_a adlı eski GSI oluşturma hedefi aşamalı olarak kaldırıldı. Android 8 veya 8.1'den Android 10'a yükseltilmiş, ramdisk'li ve sistem kökü olmayan cihazlar için eski GSI aosp_$arch_ab kullanın. Ramdisk'teki yükseltilmiş init kök sistem düzeniyle OEM system.img'yi destekler.
  • Önyüklemeyi doğrulayın. GSI'yi kullanarak yalnızca cihazın kilidini açmanız gerekir. Doğrulama önyüklemesini devre dışı bırakmak gerekli değildir.

Android 9 GSI değişiklikleri

Android 9 ile başlatılan veya bu sürüme güncellenen cihazların uyumluluk testleri için Android 9 GSI'ları kullanması gerekir. Bu, önceki GSI'lara göre aşağıdaki önemli değişiklikleri içerir:

  • GSI ve emülatörü birleştirir. GSI'lar, aosp_arm64 ve aosp_x86 gibi emülatör ürünlerinin sistem görüntülerinden oluşturulur.
  • Kök olarak sistem. Android'in önceki sürümlerinde, A/B güncellemelerini desteklemeyen cihazlar, sistem görüntüsünü /system dizini altına bağlayabiliyordu. Android 9'da sistem görüntüsünün kökü cihazın kökü olarak eklenir.
  • 64 bit bağlayıcı arayüzü. Android 8.x'te 32 bit GSI'lar 32 bit bağlayıcı arayüzünü kullanıyordu. Android 9, 32 bit ciltleyici arayüzünü desteklemediğinden, hem 32 bit GSI'lar hem de 64 bit GSI'lar, 64 bit ciltleyici arayüzünü kullanır.
  • VNDK'nın uygulanması. Android 8.1'de VNDK isteğe bağlıydı. Android 9'dan itibaren VNDK zorunludur, dolayısıyla BOARD_VNDK_VERSION ayarlanmalıdır .
  • Uyumlu sistem özelliği. Android 9, uyumlu bir sistem özelliği için erişim kontrolünü etkinleştirir ( PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true ).

Android 9 Keymaster değişiklikleri

Android'in önceki sürümlerinde, Keymaster 3 veya daha düşük bir sürümü uygulayan cihazların, çalışan sistem tarafından bildirilen sürüm bilgilerinin ( ro.build.version.release ve ro.build.version.security_patch ) önyükleyici tarafından bildirilen sürüm bilgileriyle eşleştiğini doğrulaması gerekiyordu. Bu tür bilgiler genellikle önyükleme görüntüsü başlığından elde edildi.

Android 9 ve sonraki sürümlerde bu gereksinim, satıcıların bir GSI'yi başlatmasına olanak sağlayacak şekilde değiştirildi. Özellikle Keymaster, GSI tarafından bildirilen sürüm bilgisi satıcının önyükleyicisi tarafından bildirilen sürüm bilgisiyle eşleşmeyebileceğinden doğrulama yapmamalıdır. Keymaster 3 veya daha düşük bir sürümü uygulayan cihazlar için satıcılar, doğrulamayı atlamak (veya Keymaster 4'e yükseltmek) için Keymaster uygulamasını değiştirmelidir. Keymaster hakkında ayrıntılar için Donanım Destekli Anahtar Deposu'na bakın.

GSI'ları indirin

Önceden oluşturulmuş GSI'ları ci.android.com adresindeki AOSP sürekli entegrasyon (CI) web sitesinden indirebilirsiniz. Donanım platformunuzun GSI türü indirilemiyorsa, belirli hedeflere yönelik GSI'lar oluşturmaya ilişkin ayrıntılar için aşağıdaki bölüme bakın.

GSI'lar oluşturun

Android 9'dan başlayarak, her Android sürümünde AOSP'de DESSERT -gsi adında bir GSI dalı bulunur (örneğin, android12-gsi Android 12'deki GSI dalıdır). GSI şubeleri, tüm güvenlik yamaları ve GSI yamalarının uygulandığı Android içeriğini içerir.

Bir GSI oluşturmak için, bir GSI şubesinden indirerek ve bir GSI oluşturma hedefi seçerek Android kaynak ağacını kurun. Cihazınız için doğru GSI sürümünü belirlemek için aşağıdaki yapı hedefi tablolarını kullanın. Derleme tamamlandıktan sonra, GSI sistem görüntüsüdür (yani system.img ) ve out/target/product/ generic_arm64 çıktı klasöründe görünür.

Örneğin, GSI oluşturma hedefini gsi_arm64-userdebug GSI şubesi android12-gsi üzerinde oluşturmak için aşağıdaki komutları çalıştırın.

$ repo init -u https://android.googlesource.com/platform/manifest -b android12-gsi
$ repo sync -cq
$ source build/envsetup.sh
$ lunch gsi_arm64-userdebug
$ make -j4

Android GSI oluşturma hedefleri

Aşağıdaki GSI derleme hedefleri, Android 9 veya sonraki sürümlerde başlatılan cihazlar içindir.

GSI adı CPU kemeri Bağlayıcı arayüzü bitliği Kök olarak sistem Hedef oluştur
gsi_arm KOL 64 e gsi_arm-user
gsi_arm-userdebug
gsi_arm64 ARM64 64 e gsi_arm64-user
gsi_arm64-userdebug
gsi_x86 x86 64 e gsi_x86-user
gsi_x86-userdebug
gsi_x86_64 x86-64 64 e gsi_x86_64-user
gsi_x86_64-userdebug

GSI'ların yanıp sönmesi için gereksinimler

Android cihazları farklı tasarımlara sahip olabilir, bu nedenle tüm cihazlara uygulanacak bir GSI'nin güncellenmesine yönelik genel bir komut veya talimat seti yoktur. Açık yanıp sönme talimatları için Android cihazının üreticisine danışın. Aşağıdaki adımları genel bir kılavuz olarak kullanın:

  1. Cihazda aşağıdakilerin bulunduğundan emin olun:
    • üç katına çıkarılmış
    • Cihazların kilidini açmak için bir yöntem (böylece fastboot kullanılarak flaşlanabilirler)
    • fastboot aracılığıyla flashlanabilir hale getirmek için kilitlenmemiş bir durum ( fastboot en son sürümüne sahip olduğunuzdan emin olmak için onu Android kaynak ağacından oluşturun.)
  2. Geçerli sistem bölümünü silin, ardından GSI'yi sistem bölümüne aktarın.
  3. Kullanıcı verilerini silin ve diğer gerekli bölümlerdeki (örneğin, kullanıcı verileri ve sistem bölümleri) verileri temizleyin.
  4. Cihazı yeniden başlat.

Örneğin, bir GSI'yi herhangi bir Pixel cihazına aktarmak için:

  1. fastboot moduna geçin ve önyükleyicinin kilidini açın .
  2. fastbootd destekleyen cihazların ayrıca fastbootd şu şekilde önyükleme yapması gerekir:
    $ fastboot reboot fastboot
  3. GSI'yi silin ve sistem bölümüne flashlayın:
    $ fastboot erase system
    $ fastboot flash system system.img
    
  4. Kullanıcı verilerini silin ve diğer gerekli bölümlerdeki verileri temizleyin (örneğin, kullanıcı verileri ve sistem bölümleri):
    $ fastboot -w
  5. Yeniden başlatma:
    $ fastboot reboot
Daha küçük sistem bölümlerine sahip Android 10 veya daha yeni cihazlarda, GSI güncellenirken aşağıdaki hata mesajı görünebilir:
    Resizing 'system_a'    FAILED (remote: 'Not enough space to resize partition')
    fastboot: error: Command failed
Ürün bölümünü silmek ve sistem bölümü için yer açmak için aşağıdaki komutu kullanın. Bu, GSI'yi flaşlamak için ekstra alan sağlar:
$ fastboot delete-logical-partition product_a
_a son eki, bu örnekteki system_a gibi, sistem bölümünün yuva kimliğiyle eşleşmelidir.

GSI'lara katkıda bulunun

Android, GSI gelişimine katkılarınızı memnuniyetle karşılıyor. Aşağıdakileri yaparak dahil olabilir ve GSI'nın iyileştirilmesine yardımcı olabilirsiniz:

  • Bir GSI yaması oluşturma. DESSERT -gsi bir geliştirme dalı değildir ve yalnızca AOSP ana dalından gelen isteğe bağlı seçimleri kabul eder, bu nedenle bir GSI yaması göndermek için şunları yapmalısınız:
    1. Yamayı AOSP main şubesine gönderin.
    2. DESSERT -gsi yamasını Cherrypick ile seçin.
    3. Cherrypick'in gözden geçirilmesi için bir hata bildirin.
  • GSI hatalarını bildirmek veya başka önerilerde bulunmak. Hataları bildirme bölümündeki talimatları inceleyin, ardından GSI hatalarına göz atın veya dosyalayın.

İpuçları

Adb'yi kullanarak gezinme çubuğu modunu değiştirme

GSI ile önyükleme yaparken gezinme çubuğu modu satıcının geçersiz kılmasıyla yapılandırılır. Çalışma zamanında aşağıdaki adb komutunu çalıştırarak gezinme çubuğu modunu değiştirebilirsiniz.

adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode

mode threebutton , twobutton , gestural vb. olabileceği yer.