Genel sistem görüntüsü (GSI), Android cihazlar için ayarlanmış konfigürasyonlara sahip bir sistem görüntüsüdür. Android 9 veya sonraki sürümleri ç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 testleri için kullanılır. Bir Android cihazının sistem görüntüsü bir GSI ile değiştirilir, ardından cihazın en son Android sürümüyle satıcı arayüzlerini doğru bir şekilde uyguladığından emin olmak için Vendor Test Suite (VTS) ve Compatibility Test Suite (CTS) ile test edilir.
GSI'leri kullanmaya başlamak için, GSI yapılandırmaları (ve izin verilen farklılıklar) ve türleri ile ilgili ayrıntılar için aşağıdaki bölümleri inceleyin. Bir GSI kullanmaya hazır olduğunuzda, cihaz hedefiniz için GSI'yi indirip oluşturun , ardından GSI'yi bir Android cihaza aktarın.
GSI yapılandırması ve varyansları
Mevcut Android GSI aşağıdaki yapılandırmaya sahiptir:
- tiz. GSI, AIDL arabirimleri ve HIDL arabirimleri için destek dahil olmak üzere AIDL/HIDL tabanlı mimari değişiklikler ( Tiz olarak da bilinir) için tam destek içerir. GSI'yi AIDL/HIDL satıcı arayüzlerini kullanan herhangi bir Android cihazında kullanabilirsiniz. (Daha fazla ayrıntı için, bkz. Mimari kaynakları .)
- Dosya sistemi. GSI, ext4 dosya sistemini kullanır.
Mevcut Android GSI, aşağıdaki büyük 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ü tarafından belirlenir.
Cihaz tipi | Hedef oluştur |
---|---|
Android 12 ile başlatılan cihazlar | gsi_$arch-user (İmzalı) |
Android 11 ile piyasaya sürülen cihazlar | gsi_$arch-user (İmzalı) |
Android 10 ile başlatılan cihazlar | gsi_$arch-user (İmzalı) |
Android 9 ile piyasaya sürülen cihazlar | gsi_$arch-userdebug |
Tüm GSI'ler, Android 12 kod tabanından oluşturulur ve her CPU mimarisinin karşılık gelen bir GSI ikili dosyası vardır ( GSI'leri Oluşturma bölümündeki derleme hedefleri listesine bakın).
Android 12 GSI değişiklikleri
Android 12 ile başlatılan veya Android 12'ye güncellenen cihazlar, uyumluluk testi için Android 12 GSI'leri kullanmalıdır. Bu, önceki GSI'lerden aşağıdaki büyük değişiklikleri içerir:
- Hedef adı. Uyumluluk testleri için GSI hedef adı
gsi_$arch
olarak değiştirilir. Hedef adıaosp_$arch
olan GSI, Android uygulama geliştiricileri için tutulur.CTS-on-GSI
test planı, satıcı arayüzünü test etmek için de azaltılmıştır. - Eski GSI aşamalı olarak kaldırılmıştır. GSI 12, tam olarak üç katına çıkarılmamış Android 8.0 veya 8.1 cihazlarını barındıran geçici çözümleri kaldırır.
- Kullanıcı hata ayıklama SEPolicy. GSI
gsi_$arch
,userdebug_plat_sepolicy.cil
dosyasını içerir. OEM'e özelvendor_boot-debug.img
veyaboot-debug.img
dosyası yanıp sönerken,/system/bin/init
userdebug_plat_sepolicy.cil
GSIsystem.img
yükler. Ayrıntılar için Debug Ramdisk ile VTS Testine başvurun.
Android 11 GSI değişiklikleri
Android 11 ile başlatılan veya Android 11'e güncellenen cihazlar, uyumluluk testi için Android 11 GSI'leri kullanmalıdır. Bu, önceki GSI'lerden aşağıdaki büyük değişiklikleri içerir:
- system_ext içeriği. Android 11 yeni bir
system_ext
bölümü tanımlar. GSI, sistem uzantısı içeriğinisystem/system_ext
klasörünün altına koyar. - APEX'ler. GSI, hem düzleştirilmiş hem de sıkıştırılmış APEX'leri içerir. Hangisinin kullanılacağı, çalışma zamanında satıcı bölümünde
ro.apex.updatable
sistem özelliği tarafından belirlenir. Ayrıntılar için APEX güncellemelerini desteklemek için sistemi yapılandırma referansına bakın.
Android 10 GSI değişiklikleri
Android 10 ile başlatılan veya Android 10'a güncellenen cihazlar, uyumluluk testi için Android 10 GSI'leri kullanmalıdır. Bu, önceki GSI'lerden aşağıdaki büyük değişiklikleri içerir:
- Kullanıcı yapısı. GSI, Android 10'dan kullanıcı derlemesine sahiptir. Android 10'da, kullanıcı derlemesi GSI, CTS-on-GSI/VTS uyumluluk testinde kullanılabilir. Ayrıntılar için Debug Ramdisk ile VTS Testine başvurun.
- Ayrılmamış biçim.
aosp_$arch
GSI, ayrıştırılmamış formatta oluşturulur. Gerekirse, ayrıştırılmamış bir GSI'yi seyrek biçime dönüştürmek içinimg2simg
kullanabilirsiniz. - Kök olarak sistem.
aosp_$arch_a
adlı eski GSI oluşturma hedefi aşamalı olarak kullanımdan kaldırılmıştı. Android 8 veya 8.1'den ramdisk ve root olarak sistem olmayan Android 10'a yükseltilen cihazlar için eski GSIaosp_$arch_ab
. Ramdisk'teki yükseltilmişinit
, kök olarak 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. Önyüklemeyi doğrulamayı devre dışı bırakmak gerekli değildir.
Android 9 GSI değişiklikleri
Android 9 ile başlatılan veya Android 9'a güncellenen cihazlar, uyumluluk testi için Android 9 GSI'ları kullanmalıdır. Bu, önceki GSI'lerden aşağıdaki büyük değişiklikleri içerir:
- GSI ve öykünücüyü birleştirir. GSI'ler, örneğin
aosp_arm64
veaosp_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ğlayabilirdi. Android 9'da, sistem görüntüsünün kökü, cihazın kökü olarak monte edilir. - 64 bit bağlayıcı arabirimi. Android 8.x'te 32-bit GSI'ler 32-bit bağlayıcı arayüzünü kullandı. Android 9, 32 bit bağlayıcı arabirimini desteklemez, bu nedenle hem 32 bit GSI'ler hem de 64 bit GSI'ler 64 bit bağlayıcı arabirimini kullanır.
- VNDK yaptırımı. Android 8.1'de VNDK isteğe bağlıydı. Android 9'dan itibaren VNDK zorunludur, bu nedenle
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, çalışan sistem tarafından bildirilen sürüm bilgisinin ( ro.build.version.release
ve ro.build.version.security_patch
) önyükleyici tarafından bildirilen sürüm bilgisi ile eşleştiğini doğrulamak için Keymaster 3 veya daha düşük bir sürümü uygulayan cihazların gerekliydi. Bu tür bilgiler tipik olarak ö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 başlatmasını sağlamak için değiştirilmiştir. Özellikle, GSI tarafından bildirilen sürüm bilgisi satıcının önyükleyicisi tarafından bildirilen sürüm bilgisi ile eşleşmeyebileceğinden, Keymaster doğrulama yapmamalıdır. Keymaster 3 veya daha düşük sürümünü uygulayan cihazlar için, satıcıların doğrulamayı atlamak (veya Keymaster 4'e yükseltmek) için Keymaster uygulamasını değiştirmesi gerekir. Keymaster ile ilgili ayrıntılar için Donanım destekli Anahtar Deposu'na bakın.
GSI'leri indirme
Önceden oluşturulmuş GSI'leri ci.android.com adresindeki AOSP sürekli entegrasyon (CI) web sitesinden indirebilirsiniz. Donanım platformunuz için GSI türü indirilemiyorsa, belirli hedefler için GSI'ler oluşturmaya ilişkin ayrıntılar için aşağıdaki bölüme bakın.
Bina GSI'leri
Android 9'dan başlayarak, her Android sürümünün DESSERT -gsi
adlı bir GSI şubesi vardır (örneğin, android12-gsi
, Android 12'deki GSI şubesidir). GSI dalları, tüm güvenlik yamaları ve GSI yamaları uygulanmış 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 derleme hedefi tablolarını kullanın. Derleme tamamlandıktan sonra, GSI sistem görüntüsüdür (yani system.img
) ve çıktı klasöründe out/target/product/ generic_arm64
.
Örneğin, android12-gsi
GSI dalında GSI derleme hedefi gsi_arm64-userdebug
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 oluşturma 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 | Y | gsi_arm-user gsi_arm-userdebug |
gsi_arm64 | ARM64 | 64 | Y | gsi_arm64-user gsi_arm64-userdebug |
gsi_x86 | x86 | 64 | Y | gsi_x86-user gsi_x86-userdebug |
gsi_x86_64 | x86-64 | 64 | Y | gsi_x86_64-user gsi_x86_64-userdebug |
GSI'lerin yanıp sönmesi için gereksinimler
Android cihazların farklı tasarımları olabilir, bu nedenle bir GSI'yi tüm cihazlara uygulamak için genel bir komut veya talimat seti yoktur. Açıkça 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:
- Cihazın aşağıdakilere sahip olduğundan emin olun:
- üç kat
- Cihazların kilidini açmak için bir yöntem (böylece
fastboot
kullanılarak flash'lanabilirler) -
fastboot
aracılığıyla flash'lanabilir hale getirmek için kilitsiz bir durum (fastboot
en son sürümüne sahip olduğunuzdan emin olmak için onu Android kaynak ağacından oluşturun.)
- Geçerli sistem bölümünü silin, ardından GSI'yi sistem bölümüne flashlayın.
- Kullanıcı verilerini silin ve diğer gerekli bölümlerden (örneğin, kullanıcı verileri ve sistem bölümleri) verileri temizleyin.
- Cihazı yeniden başlat.
Örneğin, herhangi bir Pixel cihazına bir GSI flaşı yapmak için:
-
fastboot
moduna önyükleme yapın ve önyükleyicinin kilidini açın . -
fastbootd
destekleyen cihazların ayrıcafastbootd
şu şekilde önyükleme yapması gerekir:$ fastboot reboot fastboot
- GSI'yi silin ve sistem bölümüne flashlayın:
$ fastboot erase system $ fastboot flash system system.img
- 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
- Yeniden başlatma:
$ fastboot reboot
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 flash etmek için fazladan alan sağlar:
$ fastboot delete-logical-partition product_a_a son
system_a
_a
sistem bölümünün yuva kimliğiyle eşleşmelidir.GSI'lere katkıda bulunmak
Android, GSI gelişimine katkılarınızı memnuniyetle karşılar. Aşağıdakileri yaparak dahil olabilir ve GSI'nin geliş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 kirazları kabul eder, bu nedenle bir GSI yaması göndermek için şunları yapmanız gerekir:- Yamayı AOSP
master
şubesine gönderin. -
DESSERT -gsi
için yamayı seçin. - Cherrypick'in gözden geçirilmesi için bir hata bildirin.
- Yamayı AOSP
- GSI hatalarını bildirmek veya başka önerilerde bulunmak. Hataları Raporlama bölümündeki talimatları gözden geçirin, ardından GSI hatalarına göz atın veya dosyalayın.
İpuçları
adb kullanarak gezinme çubuğu modunu değiştirme
GSI ile önyükleme yaparken, gezinme çubuğu modu, satıcıyı geçersiz kılarak 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 yerler.