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ışabileceği, değiştirilmemiş Android Açık Kaynak Projesi (AOSP) koduna sahip saf bir Android uygulaması olarak kabul edilir.
GSI'lar, 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, ardından cihazın Android'in en son 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'ları kullanmaya başlamak için, GSI yapılandırmaları (ve izin verilen varyanslar) 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ı indirin ve oluşturun , ardından GSI'yı bir Android cihaza yükleyin .
GSI yapılandırması ve varyansları
Geçerli Android GSI aşağıdaki yapılandırmaya sahiptir:
- tiz GSI, AIDL arabirimleri ve HIDL arabirimleri desteği dahil olmak üzere AIDL/HIDL tabanlı mimari değişiklikler ( Tiz olarak da bilinir) için tam destek içerir. GSI'yı, AIDL/HIDL satıcı arabirimlerini 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 ana farklılıkları içerir:
- CPU mimarisi. Farklı CPU yönergeleri (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şlattığı Android sürümü tarafından belirlenir.
Cihaz tipi | Hedef oluştur |
---|---|
Android 12 ile başlayan cihazlar | gsi_$arch-user (İmzalı) |
Android 11 ile başlayan cihazlar | gsi_$arch-user (İmzalı) |
Android 10 ile başlayan 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 mimarisinin karşılık gelen bir GSI ikili dosyası vardır ( GSI'ları 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ın uyumluluk testi için Android 12 GSI'ları kullanması gerekir. Bu, önceki GSI'lardan aşağıdaki önemli değişiklikleri içerir:
- hedef adı. Uyumluluk testleri için GSI hedef adı
gsi_$arch
olarak değiştirildi.aosp_$arch
hedef adına sahip GSI, Android uygulama geliştiricileri için tutulur.CTS-on-GSI
test planı, satıcı arabirimini test etmek için de azaltılmıştır. - Eski GSI aşamalı olarak kullanımdan kaldırılmıştır. GSI 12, tamamen Treblized olmayan Android 8.0 veya 8.1 cihazları barındıran geçici çözümleri kaldırır.
- Userdebug SEPolicy. GSI
gsi_$arch
içeriruserdebug_plat_sepolicy.cil
. OEM'e özelvendor_boot-debug.img
veyaboot-debug.img
yanıp sönerken/system/bin/init
, GSIsystem.img
userdebug_plat_sepolicy.cil
yükleyecektir. Detay için Debug Ramdisk ile VTS Testine bakın.
Android 11 GSI değişiklikleri
Android 11 ile başlatılan veya Android 11'e güncellenen cihazların uyumluluk testi için Android 11 GSI'ları kullanması gerekir. Bu, önceki GSI'lardan aşağıdaki önemli değişiklikleri içerir:
- system_ext içeriği. Android 11,
system_ext
yeni bir 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'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ılar için Sistemi APEX güncellemelerini destekleyecek şekilde yapılandırma referansı.
Android 10 GSI değişiklikleri
Android 10 ile başlatılan veya Android 10'a güncellenen cihazların uyumluluk testi için Android 10 GSI'ları kullanması gerekir. Bu, önceki GSI'lardan aşağıdaki önemli değişiklikleri içerir:
- kullanıcı derlemesi 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 bakın.
- Ayrılmamış format.
aosp_$arch
hedefli GSI, ayrıştırılmamış formatta oluşturulmuştur. Gerekirse, ayrıştırılmamış bir GSI'yı 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 kaldırıldı. Android 8 veya 8.1'den ramdisk ve root olarak sistem olmayan Android 10'a yükseltilen cihazlar için eski GSIaosp_$arch_ab
kullanın. Ramdisk'teki yükseltilmişinit
kök olarak sistem düzeniyle OEM system.img'yi destekler. - Önyüklemeyi doğrulayın. GSI 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ın uyumluluk testi için Android 9 GSI'ları kullanması gerekir. Bu, önceki GSI'lardan aşağıdaki önemli değişiklikleri içerir:
- GSI ve öykünücüyü birleştirir. GSI'lar,
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 yerleştirebiliyordu. Android 9'da sistem görüntüsünün kökü, cihazın kökü olarak bağlanır. - 64 bit bağlayıcı arayüzü. Android 8.x'te 32 bit GSI'lar, 32 bit binder arabirimini kullandı. Android 9, 32 bit bağlayıcı arabirimini desteklemez, bu nedenle hem 32 bit GSI'lar hem de 64 bit GSI'lar 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, dolayısıyla
BOARD_VNDK_VERSION
ayarlanmalıdır . - Uyumlu sistem özelliği. Android 9, uyumlu bir sistem özelliği (
PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true
) için erişim kontrolünü etkinleştirir.
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
) Keymaster 3 veya daha düşük sürümünü uygulayan cihazların, önyükleyici tarafından bildirilen sürüm bilgisi ile eşleştiğini doğrulaması gerekiyordu. Bu tür bilgiler tipik olarak önyükleme görüntüsü başlığından elde edilir.
Android 9 ve sonraki sürümlerde, satıcıların bir GSI başlatmasını sağlamak için bu gereksinim değişti. Özellikle Keymaster, 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 doğrulama gerçekleştirmemelidir. Keymaster 3 veya daha düşük sürümü uygulayan cihazlar için satıcı firmalar, doğrulamayı atlamak (veya Keymaster 4'e yükseltmek) için Keymaster uygulamasını değiştirmelidir. Keymaster ile ilgili ayrıntılar için Donanım Destekli Anahtar Deposu bölümüne bakın.
GSI'ları indirme
Önceden oluşturulmuş GSI'ları 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'lar oluşturmaya ilişkin ayrıntılar için aşağıdaki bölüme bakın.
GSI oluşturma
Android 9'dan başlayarak, her Android sürümünün AOSP'de DESSERT -gsi
adlı bir GSI şubesi vardır (örneğin, android12-gsi
, Android 12'deki GSI şubesidir). GSI şubeleri, tüm güvenlik yamaları ve uygulanan GSI yamaları ile Android içeriğini içerir.
Bir GSI oluşturmak için, bir GSI dalından indirerek ve bir GSI yapı hedefi seçerek Android kaynak ağacını kurun. Cihazınız için doğru GSI sürümünü belirlemek üzere 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 çıkış klasöründe out/target/product/ generic_arm64
görünür.
Örneğin, android12-gsi
GSI dalında gsi_arm64-userdebug
GSI oluşturma hedefi 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 derleme hedefleri
Aşağıdaki GSI oluşturma hedefleri, Android 9 veya sonraki sürümleri çalıştıran 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 |
Yanıp sönen GSI'lar için gereksinimler
Android cihazlar farklı tasarımlara sahip olabilir, bu nedenle tüm cihazlara uygulanacak bir GSI'yı flaşlamak için 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:
- Aygıtın aşağıdakilere sahip olduğundan emin olun:
- üçlü
- Cihazların kilidini açmak için bir yöntem (böylece
fastboot
kullanılarak yanıp sönebilirler) -
fastboot
aracılığıyla flaşlanabilir 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.)
- Geçerli sistem bölümünü silin, ardından GSI'yı sistem bölümüne yükleyin.
- Kullanıcı verilerini silin ve diğer gerekli bölümlerden (örneğin, kullanıcı verileri ve sistem bölümleri) verileri silin.
- Cihazı yeniden başlat.
Örneğin, bir GSI'yı herhangi bir Pixel cihazına flaşlamak için:
-
fastboot
moduna önyükleme yapın ve önyükleyicinin kilidini açın . -
fastbootd
destekleyen cihazların ayrıcafastbootd
önyükleme yapması gerekir:$ fastboot reboot fastboot
- GSI'yı silin ve sistem bölümüne yükleyin:
$ fastboot erase system $ fastboot flash system system.img
- Kullanıcı verilerini silin ve diğer gerekli bölümlerden verileri temizleyin (örneğin, kullanıcı verileri ve sistem bölümleri):
$ fastboot -w
- Yeniden başlat:
$ 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 flaşlamak için fazladan alan sağlar:
$ fastboot delete-logical-partition product_a
_a
eki, bu örnekteki system_a
gibi sistem bölümünün yuva kimliğiyle eşleşmelidir.GSI'lara katkıda bulunmak
Android, GSI geliştirmeye katkılarınızı memnuniyetle karşılar. 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 şubesi değildir ve yalnızca AOSP ana şubesinden gelen özel ürünleri kabul eder, bu nedenle bir GSI yaması göndermek için şunları yapmalısınız:- Yamayı AOSP
main
şubesine gönderin. - Yamayı
DESSERT -gsi
olarak seçin. - Cherrypick'in incelenmesi için bir hata bildirin.
- Yamayı AOSP
- 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 kullanarak gezinme çubuğu modunu değiştirme
GSI ile önyükleme yaparken gezinti ç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 gezinti çubuğu modunu değiştirebilirsiniz.
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
Burada mode , threebutton
, twobutton
, gestural
vb. olabilir.