Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Genel Sistem Görüntüleri

Genel bir sistem görüntüsü (GSI), Android cihazlar için yapılandırılmış yapılandırmaları olan bir sistem görüntüsüdür. Değiştirilmemiş Android Açık Kaynak Projesi (AOSP) koduna sahip, Android 8.1 veya sonraki sürümleri çalıştıran herhangi bir Android cihazının başarıyla çalışabileceği saf bir Android uygulaması olarak kabul edilir.

GSI'lar, VTS ve GSI-GSI testlerini çalıştırmak için kullanılır. Bir Android cihazı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 bir ş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 varyanslar), türler (Android GSI ve Eski GSI) ve satıcı ikili dosyaları ve VNDK bağımlılıkları hakkında ayrıntılı bilgi için aşağıdaki bölümleri inceleyin . Bir GSI kullanmaya hazır olduğunuzda, cihaz hedefiniz için GSI'yi indirin ve oluşturun , ardından GSI'yı bir Android cihaza dönüştürün.

GSI yapılandırması ve varyansları

Mevcut Android GSI aşağıdaki yapılandırmaya sahiptir:

  • Tiz. GSI, HIDL arayüzleri için destek de dahil olmak üzere Android 8.0'da sunulan HIDL tabanlı mimari değişiklikler ( Tiz olarak da bilinir) için tam destek içerir. GSI'yı, HIDL satıcı arayüzlerini kullanan herhangi bir Android cihazda kullanabilirsiniz. (Daha fazla ayrıntı için bkz. Mimari kaynaklar .)
  • Önyüklemeyi doğrulayın. GSI, bir doğrulama önyükleme çözümü içermez ( vboot 1.0 veya AVB gibi ). GSI'yı Android 9 veya önceki bir sürümde başlatılan bir cihaza flaş etmek için, cihazın önyükleme doğrulamasını devre dışı bırakma yöntemine sahip olması gerekir.
  • Dosya sistemi. GSI ext4 dosya sistemini kullanır.
  • Bölüm düzeni. GSI, kök sistem olarak bölüm düzenini kullanır.

Mevcut Android GSI aşağıdaki büyük varyansları içerir:

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

Tiz uygunluk 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 10 ile başlatılan cihazlar aosp_$arch-user
Android 9 ile başlatılan cihazlar aosp_$arch-userdebug
Android 8.0 veya Android 8.1 ile başlatılan cihazlar aosp_$arch_ab-userdebug

Tüm GSIS Android 10 kod tabanı inşa edilir ve her işlemci mimarisi karşılık gelen GSI ikili (içinde inşa hedeflerin listesini görmek sahiptir Bina GSIS ).

Android 10 GSI değişiklikleri

Android 10 ile başlatılan cihazlar, uyumluluk testi için Android 10 GSI'ları kullanmalıdır. Bu, önceki GSI'lardan aşağıdaki büyük değişiklikleri içerir:

  • Kullanıcı oluşturma. 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ılı bilgi için Debug Ramdisk ile VTS Testine bakın .
  • Ayrıştırılmamış biçim. aosp_$arch GSI ayrıştırılmamış biçimde oluşturulur. img2simg bir GSI'yı seyrek formata dönüştürmek için img2simg kullanabilirsiniz.
  • Sistem as-root. aosp_$arch_a adlı eski GSI oluşturma hedefi aşamalı olarak kaldırıldı. Android 8 veya aosp_$arch_ab ramdisk ve root olarak sistem olmayan Android 10'a yükseltilmiş cihazlar için eski GSI aosp_$arch_ab . Ramdisk'teki yükseltilmiş init , kök sistemi olarak OEM sistem.img'yi destekler.

Android 9 veya 10'da başlatılan cihazları GSI ile CTS ile test etmek için Android GSI oluşturma hedeflerini kullanın .

Eski GSI

_ab son _ab adlandırılan eski _ab (örneğin, aosp_arm64_ab ). Bu GSI'lar Android 10 kaynak ağacından oluşturulmuştur, ancak Android 8 veya 8.1'den yükseltilmiş cihazlar için aşağıdaki geriye dönük uyumlu yapılandırmaları içerir:

  • 32 bit kullanıcı alanı + 32 bit bağlayıcı arabirimi. 32 bit GSI'ler, 32 bit bağlayıcı arabirimini kullanmaya devam edebilir.
  • 8.1 VNDK. Cihazlar birlikte verilen 8.1 VNDK'yı kullanabilir.
  • Mount dizinleri. Bazı eski aygıtlar bağlama işaretçileri olarak dizinleri kullanır (örneğin, /bluetooth , /firmware/radio ve /persist ).

CTS-on-GSI ile Android 8 veya 8.1'de başlatılan cihazları test etmek için Eski GSI oluşturma hedeflerini kullanın .

Android 9 GSI değişiklikleri

Android 9 GSI'ları, önceki GSI'lardan aşağıdaki büyük değişiklikleri içerir:

  • GSI ve öykünücüyü birleştirir. aosp_arm64 , örneğin aosp_arm64 ve aosp_x86 gibi emülatör ürünlerinin sistem görüntülerinden oluşturulur.
  • Sistem as-root. Android'in önceki sürümlerinde, A / B güncellemelerini desteklemeyen cihazlar sistem görüntüsünü /system dizini altına bağlayabilir. Android 9'da, sistem görüntüsünün kökü cihazın kökü olarak monte edilir.
  • 64-bit bağlayıcı arayüzü. Android 8.x'te, 32 bit GSI'ler 32 bit bağlayıcı arabirimini kullandı. Android 9, 32 bit bağlayıcı arayüzünü desteklemediğinden, hem 32 bit GSI'lar hem de 64 bit GSI'lar 64 bit bağlayıcı arayüzünü kullanır.
  • VNDK zorlaması. Android 8.1'de VNDK isteğe bağlıydı. Böylece Android 9 başlayarak VNDK, zorunludur 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ünü uygulayan cihazların, ç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 ro.build.version.security_patch ro.build.version.release doğrulaması gerekiyordu. 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'yi önyüklemesini sağlamak için değişti. GSI tarafından bildirilen sürüm bilgileri, satıcının önyükleyici tarafından bildirilen sürüm bilgileriyle eşleşmeyebileceğinden, özellikle Anahtar Yöneticisi doğrulama yapmamalıdır. Keymaster 3 veya daha eski sürümleri kullanan cihazlarda, satıcılar 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 bkz. Donanım Destekli Anahtar Deposu .

Satıcı ikili dosyaları ve VNDK bağımlılıkları

Android 10'a yükseltme yapan cihazlar, cihazda kullanılan satıcı ikili dosyalarının sürümüne ve cihazı oluşturmak için kullanılan VNDK ile ilgili yapılandırmalara bağlı olarak farklı yükseltme yollarına sahiptir. Aşağıdaki tabloda, yükseltilmiş cihazlar için eski GSI desteği özetlenmektedir.

Kullanım örneği SATICI
ikili
versiyon
BOARD_VNDK_VERSION Eski GSI
sistem ikili dosyaları sürümü
Eski GSI desteği
0 8 (hiç) 10 Hayır
1 8.1 (boş) 10 Hayır
2 8.1 current 10 Evet
3 10 current 10 Evet

Desteklenen en yaygın kullanım durumu # 2'dir; burada eski BOARD_VNDK_VERSION , BOARD_VNDK_VERSION current ayarlanmış olarak oluşturulmuş Android 8.1 çalıştıran cihazları destekler.

Vaka # 1 desteklenmiyor. Bu durumda, eski BOARD_VNDK_VERSION , BOARD_VNDK_VERSION çıkarıldığı Android 8.1 çalıştıran cihazları BOARD_VNDK_VERSION . Bu cihazlar desteklenemez çünkü satıcı ikili dosyaları eski GSI'larda bulunmayan Android 8.1 VNDK olmayan paylaşılan kitaplıklara bağlıdır. Bu cihazları eski bir GSI ile uyumlu hale getirmek için aşağıdakilerden birini yapmanız gerekir:

  • BOARD_VNDK_VERSION olmadan BOARD_VNDK_RUNTIME_DISABLE etkinleştirin (durum BOARD_VNDK_RUNTIME_DISABLE kullanın).

    VEYA

  • Android 10'daki paylaşılan kitaplıklara bağlı olarak tedarikçi ikili dosyalarını bağlantı noktasına getirin / yükseltin (kullanım örneği 3).

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 oluşturma hakkında 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ü DESSERT -gsi adlı bir GSI şubesine sahiptir (örneğin, android10-gsi , Android 10'daki 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 indirip bir GSI oluşturma 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 oluşturma hedefi tablolarını kullanın. Derleme tamamlandıktan sonra, GSI sistem görüntüsüdür ( system.img ) ve çıkış klasöründe out/target/product/ generic_arm64 . Yapı ayrıca, Android Doğrulanmış Önyükleme'yi kullanarak cihazlarda önyükleme doğrulamasını devre dışı bırakmak için kullanabileceğiniz vbmeta.img çıktısı vbmeta.img .

Örneğin, GSI oluşturma hedefi aosp_arm64-userdebug GSI dalı android10-gsi üzerinde oluşturmak için aşağıdaki komutları çalıştırın.

$ repo init -u https://android.googlesource.com/platform/manifest -b android10-gsi
$ repo sync -cq
$ source build/envsetup.sh
$ lunch aosp_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. Mimariler arasındaki varyansların azalması nedeniyle, Android 10 yalnızca dört GSI ürünü içerir.

GSI adı CPU kemeri Bağlayıcı arabirimi biti Sistem as-root Hedef oluştur
aosp_arm KOL 64 Y aosp_arm-user
aosp_arm-userdebug
aosp_arm64 ARM64 64 Y aosp_arm64-user
aosp_arm64-userdebug
aosp_x86 x86 64 Y aosp_x86-user
aosp_x86-userdebug
aosp_x86_64 x86-64 64 Y aosp_x86_64-user
aosp_x86_64-userdebug

Eski GSI oluşturma hedefleri

Aşağıdaki eski GSI oluşturma hedefleri, Android 8.0 veya _ab Android 10'a yükseltme yapan cihazlar içindir. Eski GSI adları, bunları Android 10 GSI adlarından ayırmak için _ab sonekini içerir.

GSI adı CPU kemeri Bağlayıcı arabirimi biti Sistem as-root Hedef oluştur
aosp_arm_ab KOL 32 Y aosp_arm_ab-userdebug
aosp_arm_64b_ab KOL 64 Y aosp_arm_64b_ab-userdebug
aosp_arm64_ab ARM64 64 Y aosp_arm64_ab-userdebug
aosp_x86_ab x86 32 Y aosp_x86_ab-userdebug
aosp_x86_64_ab x86-64 64 Y aosp_x86_64_ab-userdebug

Yanıp sönen GSI'lar için gereksinimler

Android cihazların farklı tasarımları olabilir, bu nedenle bir GSI'nın tüm cihazlara uygulanması için yanıp sönmeye 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. Aygıtta aşağıdakilerin bulunduğundan emin olun:
    • Treblized
    • Cihazların kilidini açmak için bir yöntem (böylece fastboot kullanılarak yanıp fastboot )
    • Doğrulama önyüklemesini devre dışı bırakma yöntemi (örneğin, vboot 1.0 veya AVB )
    • Kilidi açılmış devlet onu flashable aracılığıyla yapmak için fastboot (eğer en son sürümüne sahip olmasını sağlamak için fastboot , Android kaynak ağacından inşa.)
  2. Önyüklemeyi doğrula'yı devre dışı bırakın.
  3. Geçerli sistem bölümünü silin, ardından GSI'yı sistem bölümüne yanıp sönün.
  4. Kullanıcı verilerini silin ve diğer gerekli bölümlerdeki verileri silin (örneğin, kullanıcı verileri ve sistem bölümleri).
  5. Cihazı yeniden başlat.

Örneğin, bir GSI'yı herhangi bir Pixel cihazına flaş etmek için:

  1. fastboot moduna önyükleme yapın ve önyükleyicinin kilidini açın . Destekleyen cihazlar fastbootd da içine çizme gerekir fastbootd tarafından:
    $ fastboot reboot fastboot
  2. vbmeta.img yanıp vbmeta.img doğrulama önyüklemesini (AVB) vbmeta.img :
    $ fastboot --disable-verification flash vbmeta vbmeta.img
  3. GSI'yi silin ve sistem bölümüne yanıp sönü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 cihazlarda GSI yanıp sönerken 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'nın yanıp sönmesi için ekstra alan sağlar:
$ fastboot delete-logical-partition product_a
Sonek _a gibi sistem bölümüne ait yuva kimliği uymalıdır system_a bu örnekte.

GSI'lara katkıda bulunmak

Android, GSI geliştirmesine katkılarınızı memnuniyetle karşılıyor. Katılım ve GSI'nın iyileştirilmesine yardımcı olabilirsiniz:

  • GSI yaması oluşturma. DESSERT -gsi bir geliştirme dalı değildir ve yalnızca AOSP ana dalından gelen DESSERT -gsi kabul eder, bu nedenle bir GSI yaması göndermek için şunları yapmanız gerekir:
    1. Yamayı AOSP master dalına gönderin.
    2. Yamayı DESSERT -gsi .
    3. Cherrypick'i incelemek için bir hata gönderin.
  • GSI hatalarını bildirmek veya başka önerilerde bulunmak. Hata Bildirimi bölümündeki talimatları inceleyin, ardından GSI hatalarına göz atın veya dosya gönderin .

İpuçları

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

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

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

Nerede mode olabilir threebutton , twobutton , gestural , vb.