Genel sistem görüntüsü (GSI), Android cihazlar için yapılandırılmış bir sistem görüntüsüdür. Android 9 veya sonraki bir sürümün yüklü olduğu tüm Android cihazların başarıyla çalıştırabileceği, değiştirilmemiş Android Açık Kaynak Projesi (AOSP) koduna sahip saf Android uygulamasıdır.
GSI'ler, VTS ve GSI'de CTS testleri çalıştırmak için kullanılır. Android cihazın sistem görüntüsü bir GSI ile değiştirilir ve ardından cihazın Android'in en son sürümüyle tedarikçi arayüzlerini doğru şekilde uyguladığından emin olmak için Tedarikçi Test Paketi (VTS) ve Uyumluluk Test Paketi (CTS) ile test edilir.
GSI yapılandırmaları (ve izin verilen farklılıklar) ile türleri hakkında ayrıntılı bilgi edinmek için GSI'leri kullanmaya başlamak üzere aşağıdaki bölümleri inceleyin. GSI kullanmaya hazır olduğunuzda, cihaz hedefiniz için GSI'yi indirip derleyin, ardından GSI'yi bir Android cihaza yükleyin.
GSI yapılandırması ve farklılıkları
Geçerli Android GSI'nın yapılandırması aşağıdaki gibidir:
- Tiz. GSI, AIDL arayüzleri ve HIDL arayüzleri için destek de dahil olmak üzere AIDL/HIDL tabanlı mimari değişiklikleri (Treble olarak da bilinir) için tam destek içerir. GSI'yi, AIDL/HIDL tedarikçi arayüzlerini kullanan herhangi bir Android cihazda kullanabilirsiniz. (Ayrıntılı bilgi için Mimari kaynakları bölümüne göz atın.)
- Dosya sistemi. GSI, ext4 dosya sistemini kullanır.
Mevcut Android GSI aşağıdaki önemli farklılıkları içerir:
- CPU mimarisi Farklı CPU talimatları (ARM, x86 vb.) ve CPU bit sayısı (32 bit veya 64 bit) desteği
Treble uygunluk testleri için GSI hedefleri
Uyumluluk testi için kullanılan GSI, cihazın kullanıma sunulduğu Android sürümüne göre belirlenir.
Cihaz türü | Derleme hedefi |
---|---|
Android 15 ile kullanıma sunulan cihazlar | gsi_$arch-user (İmzalandı) |
Android 14 ile kullanıma sunulan cihazlar | gsi_$arch-user (İmzalandı) |
Android 13 ile kullanıma sunulan cihazlar | gsi_$arch-user (İmzalandı) |
Android 12L ile kullanıma sunulan cihazlar | gsi_$arch-user (İmzalandı) |
Android 12 ile kullanıma sunulan cihazlar | gsi_$arch-user (İmzalandı) |
Android 11 ile kullanıma sunulan cihazlar | gsi_$arch-user (İmzalandı) |
Tüm GSI'lar, Android 12 kod tabanından oluşturulur ve her CPU mimarisinin karşılık gelen bir GSI ikili programı vardır (Building GSI (GSI Derleme) bölümündeki derleme hedefleri listesine bakın).
Android 12 GSI değişiklikleri
Android 12 ile kullanıma sunulan veya bu sürüme güncellenen cihazlar, uygunluk testi için Android 12 GSI kullanmalıdır. Aşağıda, önceki GSI'lere kıyasla yapılan önemli değişikliklerden bazıları verilmiştir:
- Hedef adı. Uygunluk testleri için GSI hedef adı
gsi_$arch
olarak değiştirildi. Hedef adıaosp_$arch
olan GSI, Android uygulama geliştiricileri için saklanır. Satıcı arayüzünü test etmek içinCTS-on-GSI
test planı da azaltılır. - Eski GSI kullanımdan kaldırılıyor. GSI 12, tam olarak Treblize edilmemiş Android 8.0 veya 8.1 cihazlarda kullanılan geçici çözümleri kaldırır.
- Userdebug SEPolicy. GSI
gsi_$arch
,userdebug_plat_sepolicy.cil
değerini içerir. OEM'e özelvendor_boot-debug.img
veyaboot-debug.img
öğesi yanıp sönerken/system/bin/init
, GSIsystem.img
'denuserdebug_plat_sepolicy.cil
yükler. Ayrıntılar için Hata Ayıklama Ramdisk'i ile VTS Testi başlıklı makaleyi inceleyin.
Android 11 GSI değişiklikleri
Android 11 ile kullanıma sunulan veya Android 11'e güncellenen cihazlar, uygunluk testi için Android 11 GSI'lerini kullanmalıdır. Aşağıda, önceki GSI'lere kıyasla yapılan önemli değişikliklerden bazıları verilmiştir:
- system_ext içerikleri. Android 11, yeni bir bölüm
system_ext
tanımlar. GSI, sistem uzantısı içeriklerinisystem/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'leri içerir.
Hangisinin kullanılacağı, çalışma zamanında tedarikçi bölümündeki
ro.apex.updatable
sistem mülküne göre belirlenir. Ayrıntılar için Sistemi APEX güncellemelerini destekleyecek şekilde yapılandırma başlıklı makaleyi inceleyin.
Android 10 GSI değişiklikleri
Android 10 ile kullanıma sunulan veya Android 10'a güncellenen cihazlar, uygunluk testi için Android 10 GSI'lerini kullanmalıdır. Aşağıda, önceki GSI'lere kıyasla yapılan önemli değişikliklerden bazıları verilmiştir:
- Kullanıcı oluşturma. GSI, Android 10'dan itibaren kullanıcı derlemesine sahiptir. Android 10'da kullanıcı derlemesi GSI, GSI/VTS'de CTS uygunluk testinde kullanılabilir. Ayrıntılar için Hata Ayıklama Ramdisk'i ile VTS Testi başlıklı makaleyi inceleyin.
- Ayrıştırılmamış biçim. Hedefleri olan GSI'ler
aosp_$arch
ayrıştırılmamış biçimde oluşturulur. Gerekirse, ayrıştırılmamış bir GSI'yi seyrek biçime dönüştürmek içinimg2simg
'ü kullanabilirsiniz. - Root olarak sistem.
aosp_$arch_a
adlı eski GSI derleme hedefi kullanımdan kaldırıldı. Android 8 veya 8.1'den Android 10'a ramdisk ve kök olarak sistem olmayan bir cihazla 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 dosyasını destekler. - Başlatmayı doğrulayın. GSI'yi kullanarak yalnızca cihazın kilidini açmanız gerekir. Önyüklemeyi doğrulamayı devre dışı bırakmanız gerekmez.
Android 9 GSI değişiklikleri
Android 9 ile kullanıma sunulan veya Android 9'a güncellenen cihazlar, uyumluluk testi için Android 9 GSI'lerini kullanmalıdır. Aşağıda, önceki GSI'lere kıyasla yapılan önemli değişikliklerden bazıları verilmiştir:
- 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. - Root olarak sistem. Android'in önceki sürümlerinde, A/B güncellemelerini desteklemeyen cihazlar sistem görüntüsünü
/system
dizininin altına monte edebilirdi. 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'ler 32 bit bağlayıcı arayüzünü kullanıyordu. Android 9, 32 bit bağlayıcı arayüzünü desteklemediğinden hem 32 bit GSI'ler hem de 64 bit GSI'ler 64 bit bağlayıcı arayüzünü kullanır.
- VNDK yaptırımı. Android 8.1'de VNDK isteğe bağlıydı.
Android 9'dan itibaren VNDK zorunlu olduğundan
BOARD_VNDK_VERSION
ayarlanmalıdır. - Uyumlu sistem özelliği. Android 9, uyumlu bir sistem mülkü (
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, Keymaster 3 veya daha eski sürümleri uygulayan cihazların, çalışan sistem tarafından bildirilen sürüm bilgilerinin (ro.build.version.release
ve ro.build.version.security_patch
) bootloader tarafından bildirilen sürüm bilgileriyle eşleştiğini doğrulaması gerekiyordu. Bu tür bilgiler genellikle başlatma görüntüsü başlığından elde edilir.
Android 9 ve sonraki sürümlerde bu koşul, tedarikçi firmaların GSI önyüklemesi yapabilmesi için değiştirilmiştir. Daha açık belirtmek gerekirse, GSI tarafından bildirilen sürüm bilgileri tedarikçi firmanın önyükleyicisi tarafından bildirilen sürüm bilgileriyle eşleşmeyebileceği için Keymaster doğrulama yapmamalıdır. Keymaster 3 veya daha eski sürümleri uygulayan cihazlarda tedarikçilerin, doğrulamayı atlayacak şekilde Keymaster uygulamasını değiştirmesi (veya Keymaster 4'e yükseltmesi) gerekir. Anahtar yöneticisi hakkında ayrıntılı bilgi için Donanım destekli anahtar mağazası başlıklı makaleyi inceleyin.
GSI'leri indirme
Önceden oluşturulmuş GSI'leri ci.android.com adresindeki AOSP sürekli entegrasyon (CI) web sitesinden indirebilirsiniz. Donanım platformunuza yönelik GSI türü indirilemiyorsa belirli hedefler için GSI oluşturma hakkında ayrıntılı bilgi için aşağıdaki bölüme bakın.
GSI oluşturma
Android 9 sürümünden itibaren her Android sürümünün AOSP'de DESSERT-gsi
adlı bir GSI dalı vardır (örneğin, android12-gsi
, Android 12'de GSI dalıdır). GSI dalları, tüm güvenlik yamalarını ve GSI yamalarını içeren Android içeriğini içerir.
GSI oluşturmak için bir GSI dalından indirip bir GSI derleme hedefi seçerek Android kaynak ağacını ayarlayın. 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 (system.img
) ve out/target/product/generic_arm64
çıkış klasöründe görünür.
Örneğin, android12-gsi
GSI dalında gsi_arm64-userdebug
GSI derleme hedefini derlemek 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 derleme hedefleri, Android 9 veya sonraki sürümlerde kullanıma sunulan cihazlar içindir.
GSI adı | CPU yapısı | Bağlayıcı arayüzü bit sayısı | Sistem-root | Hedef oluştur |
---|---|---|---|---|
gsi_arm |
ALARMI ETKİNLEŞTİR | 32 | Y | gsi_arm-user gsi_arm-userdebug |
gsi_arm64 |
ARM64 | 64) | Y | gsi_arm64-user gsi_arm64-userdebug |
gsi_x86 |
x86 | 32 | Y | gsi_x86-user gsi_x86-userdebug |
gsi_x86_64 |
x86-64 | 64) | Y | gsi_x86_64-user gsi_x86_64-userdebug |
GSI'leri flaşlamayla ilgili şartlar
Android cihazların tasarımları farklı olabilir. Bu nedenle, tüm cihazlarda geçerli olacak şekilde GSI'yi flaşlamak için genel bir komut veya talimat dizisi yoktur. Android cihazın üreticisine danışarak yanan ışıklarla ilgili talimatları inceleyin. Genel bir kılavuz olarak aşağıdaki adımları uygulayın:
- Cihazın aşağıdakilere sahip olduğundan emin olun:
- Tiz
- Cihazların kilidini açmak için bir yöntem (böylece,
fastboot
kullanılarak yanıp sönebilirler) fastboot
ile yanıp sönebilir olacak şekilde kilitsiz durumda. (En sonfastboot
sürümüne sahip olduğunuzdan emin olmak için uygulamayı Android kaynak ağacından oluşturun.)
- Mevcut sistem bölümünü silin, ardından GSI'yi sistem bölümüne yükleyin.
- 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ın.
Örneğin, herhangi bir Pixel cihaza GSI yüklemek için:
fastboot
modunda başlatın ve bootloader'ın kilidini açın.fastbootd
destekleyen cihazların da aşağıdaki işlemleri yaparakfastbootd
'a önyükleme yapması gerekir:$ fastboot reboot fastboot
- GSI'yi 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ümlerdeki verileri (örneğin, kullanıcı verileri ve sistem bölümleri) temizleyin:
$ fastboot -w
- Bootloader'da tekrar başlatın:
$ fastboot reboot-bootloader
- Sağlanan vbmeta'yı yanıp sönerken Doğrulanmış Başlatma doğrulamasını devre dışı bırakma:
$ fastboot --disable-verification flash vbmeta vbmeta.img
- Reboot:
$ fastboot reboot
Resizing 'system_a' FAILED (remote: 'Not enough space to resize partition') fastboot: error: Command failed
$ fastboot delete-logical-partition product_a
_a
son eki, sistem bölümünün alan kimliğiyle (ör. bu örnekteki system_a
) eşleşmelidir.
GSI'lere katkıda bulunma
Android, GSI geliştirmesine katkılarınızı bekliyor. Siz de dahil olmak ve GSI'nın iyileştirilmesine yardımcı olmak için:
- GSI yaması oluşturma.
DESSERT-gsi
bir geliştirme dalı değildir ve yalnızca AOSP ana dalından seçili değişiklikleri kabul eder. Bu nedenle, GSI yaması göndermek için şunları yapmanız gerekir:- Yamayı AOSP
main
dalına gönderin. DESSERT-gsi
için yamayı seçin.- Seçili öğelerin incelenmesi için hata kaydı oluşturun.
- Yamayı AOSP
- GSI hatalarını bildirme veya başka önerilerde bulunma. Hata bildirme başlıklı makaledeki talimatları inceleyin, ardından GSI hatalarına göz atın veya hata bildirin.
İpuçları
adb'yi kullanarak gezinme çubuğu modunu değiştirme
GSI ile önyükleme yapılırken gezinme çubuğu modu, tedarikçi firmanın geçersiz kılma işlemiyle 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
Burada mode, threebutton
, twobutton
, gestural
vb. olabilir.