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:
- Tiz. GSI, AIDL arayüzleri ve HIDL arayüzleri desteği de 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ı 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 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 özelvendor_boot-debug.img
veyaboot-debug.img
yanıp sönerken,/system/bin/init
GSIsystem.img
dosyasındanuserdebug_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ğinisystem/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ç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 Android 10'a yükseltilmiş, ramdisk'li ve sistem kökü olmayan cihazlar için eski GSIaosp_$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
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ğ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:
- 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.)
- Geçerli sistem bölümünü silin, ardından GSI'yi sistem bölümüne aktarın.
- Kullanıcı verilerini silin ve diğer gerekli bölümlerdeki (örneğin, kullanıcı verileri ve sistem bölümleri) verileri temizleyin.
- Cihazı yeniden başlat.
Örneğin, bir GSI'yi herhangi bir Pixel cihazına aktarmak için:
-
fastboot
moduna geçin 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 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:- Yamayı AOSP
main
şubesine gönderin. -
DESSERT -gsi
yamasını Cherrypick ile 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ı 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.