Общие системные изображения

Общий образ системы (GSI) - это образ системы с настроенными конфигурациями для устройств Android. Это считается чистой Android реализации с неизмененной Android Project Open Source (AOSP) код , который любой Android устройства под управлением Android 9 или выше может работать успешно.

GSI используются для запуска тестов VTS и CTS-on-GSI. Система образ Android устройства заменяется GSI затем тестируют с Vendor Test Suite (СДС) и Compatibility Test Suite (CTS) , чтобы гарантировать , что реализует устройства поставщика интерфейсов правильно с последней версией Android.

Чтобы начать работу с GSIs, просмотрите следующие разделы для дополнительной информации о конфигурации GSI (и разрешенных отклонений) и типов . Когда вы будете готовы использовать GSI, скачать и построить GSI для целевого устройства, а затем прошить GSI на Android устройства.

Конфигурация и варианты GSI

Текущая конфигурация Android GSI следующая:

Текущая версия Android GSI включает следующие основные варианты:

  • Архитектура процессора. Поддержка различных инструкций процессора (ARM, x86 и т. Д.) И разрядности процессора (32 или 64 бит).

Цели GSI для тестов на соответствие требованиям Treble

GSI, используемый для тестирования на соответствие, определяется версией Android, с которой запускается устройство.

Тип устройства Цель сборки
Запуск устройств с Android 12 gsi_$arch-user (Подпись)
Запуск устройств с Android 11 gsi_$arch-user (Подпись)
Запуск устройств с Android 10 gsi_$arch-user (Подпись)
Запуск устройств с Android 9 gsi_$arch-userdebug

Все GSIs построены из Android 12 кодового, и каждая архитектура ЦП имеет соответствующий GSI двоичную (см списка строительных целей в строительной GSIs ).

Изменения Android 12 GSI

Устройства, запускаемые с Android 12 или обновленные до них, должны использовать GSI Android 12 для тестирования на соответствие. Это включает следующие важные изменения по сравнению с более ранними GSI:

  • Имя цели. GSI целевого имя для испытаний соответствия изменяется на gsi_$arch . GSI с именем цели aosp_$arch поддерживаются для разработчиков Android приложений. Тестовый план CTS-on-GSI также снижается для тестирования интерфейса поставщика.
  • Устаревшая GSI прекращена. GSI 12 удаляет обходные пути для устройств Android 8.0 или 8.1, которые не полностью Treblized.
  • Userdebug SEPolicy. В GSI gsi_$arch содержит userdebug_plat_sepolicy.cil . Если мигает ОЕМ-специфический vendor_boot-debug.img или boot-debug.img , /system/bin/init загрузит userdebug_plat_sepolicy.cil из GSI system.img . Ссылочная VTS Тестирование с Debug Ramdisk для деталей.

Изменения Android 11 GSI

Устройства, запускаемые с Android 11 или обновленные до них, должны использовать GSI Android 11 для тестирования на соответствие. Это включает следующие важные изменения по сравнению с более ранними GSI:

  • system_ext содержимое. Android 11 определяет новый раздел system_ext . GSI помещает содержимое расширения системы в папке system/system_ext .
  • APEXes. GSI содержит как уплощенные, так и сжатые APEX. Какой из использования определяется свойства системы ro.apex.updatable в разделе поставщика во время выполнения. Справочная система Настройки для поддержки обновлений APEX для деталей.

Изменения Android 10 GSI

Устройства, запускаемые с Android 10 или обновленные до них, должны использовать Android 10 GSI для тестирования на соответствие. Это включает следующие важные изменения по сравнению с более ранними GSI:

  • Сборка пользователя. GSI имеет пользовательскую сборку из Android 10. В Android 10 пользовательскую сборку GSI можно использовать в тестировании на соответствие CTS-on-GSI / VTS. Ссылка VTS Тестирование с Debug Ramdisk для деталей.
  • Неразборчивый формат. GSI с целями aosp_$arch построены с unsparsed форматом. Вы можете использовать img2simg для преобразования unsparsed GSI в редком формате , если это необходимо.
  • Система от имени пользователя root. Наследие GSI целевой сборки с именем aosp_$arch_a было прекращено. Для устройств модернизированных от Android 8 или 8,1 до Android 10 с псевдодиска и несистемной-как-корень, используйте наследие GSI aosp_$arch_ab . Модернизированная init в псевдодиске поддерживает OEM system.img с системой, как-корень макетом.
  • Проверьте загрузку. Используя GSI, вам нужно только разблокировать устройство. Отключать проверку загрузки необязательно.

Изменения Android 9 GSI

Устройства, запускаемые с Android 9 или обновленные до них, должны использовать GSI Android 9 для тестирования на соответствие. Это включает следующие важные изменения по сравнению с более ранними GSI:

  • Объединяет GSI и эмулятор. GSIs построены из системы образов эмулятора продуктов, например, aosp_arm64 и aosp_x86 .
  • Система от имени пользователя root. В предыдущих версиях Android, устройств , которые не поддерживают A / B обновления может смонтировать образ системы под /system директории. В Android 9 корень образа системы монтируется как корень устройства.
  • 64-битный интерфейс связывателя. В Android 8.x 32-битные GSI использовали 32-битный интерфейс связывания. Android 9 не поддерживает 32-битный интерфейс связывания, поэтому как 32-битные GSI, так и 64-битные GSI используют 64-битный интерфейс связывания.
  • Правоприменение ВНДК. В Android 8.1 VNDK был необязательным. Начиная с Android 9, VNDK является обязательным, поэтому BOARD_VNDK_VERSION должен быть установлен.
  • Совместимое системное свойство. Android 9 позволяет проверку доступа к совместимому свойств системы ( PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true ).

Изменения в Android 9 Keymaster

В более ранних версиях Android, устройство , реализующие Keymaster 3 или ниже должны были убедиться , что информация о версии ( ro.build.version.release и ro.build.version.security_patch ) сообщает работающую система согласованной информации о версии , сообщенной загрузчиком. Такая информация обычно была получена из заголовка загрузочного образа.

В Android 9 и выше это требование было изменено, чтобы позволить поставщикам загружать GSI. В частности, Keymaster не должен выполнять проверку, потому что информация о версии, сообщаемая GSI, может не совпадать с информацией о версии, сообщаемой загрузчиком поставщика. Для устройств, реализующих Keymaster 3 или ниже, поставщики должны изменить реализацию Keymaster, чтобы пропустить проверку (или выполнить обновление до Keymaster 4). Более подробной информации о Keymaster см Hardware спинок хранилища ключей .

Скачивание GSI

Вы можете скачать скомпилированную GSIs с непрерывной интеграции (CI) сайт AOSP в ci.android.com . Если тип GSI для вашей аппаратной платформы недоступен для загрузки, обратитесь к следующему разделу для получения подробной информации о создании GSI для конкретных целей.

Создание GSI

Начиная с Android 9, каждый Android версия имеет GSI ветвь с именем DESSERT -gsi на AOSP (например, android12-gsi является филиалом GSI на Android 12). GSI ветви включают содержание Android со всеми патчами безопасности и GSI патчи применяются.

Для того, чтобы построить GSI, настроить дерево Android источника путем загрузки из филиала GSI и выбор цели сборки GSI . Используйте приведенные ниже таблицы целей сборки, чтобы определить правильную версию GSI для вашего устройства. После сборки завершается, ГСИ является система изображения (то есть, system.img ) и отображается в папке вывода out/target/product/ generic_arm64 .

Например, чтобы построить GSI целевой сборки gsi_arm64-userdebug на ГСИ ветви android12-gsi , нужно выполнить следующие команды.

$ 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

Следующие цели сборки GSI предназначены для устройств, запускаемых на Android 9 или выше.

Имя GSI Арка процессора Разрядность интерфейса связывателя Система от имени пользователя root Цель сборки
gsi_arm РУКА 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

Устройства Android могут иметь разный дизайн, поэтому не существует общей команды или набора инструкций для прошивки GSI, которые можно было бы применить ко всем устройствам. Обратитесь к производителю устройства Android за подробными инструкциями по перепрошивке. Используйте следующие шаги в качестве общего руководства:

  1. Убедитесь, что на устройстве есть следующее:
    • Treblized
    • Способ разблокировки устройства (так что они могут быть прошиты с помощью fastboot )
    • Разблокирована состояние , чтобы сделать его Flashable с помощью fastboot (Чтобы убедиться , что у вас есть последняя версия fastboot , строить из дерева Android - источника.)
  2. Удалите текущий системный раздел, затем запишите GSI в системный раздел.
  3. Сотрите пользовательские данные и удалите данные с других необходимых разделов (например, с пользовательских данных и системных разделов).
  4. Перезагрузите устройство.

Например, чтобы прошить GSI на любое устройство Pixel:

  1. Загрузка в fastboot режиме и разблокировать загрузчик .
  2. Устройства , поддерживающие fastbootd также должны загружаться в fastbootd по:
    $ fastboot reboot fastboot
  3. Стирание и прошить GSI для системного раздела:
    $ fastboot erase system
    $ fastboot flash system system.img
    
  4. Протрите пользовательские данные и очистить данные из других необходимых разделов (например, пользовательские данные и системные разделы):
    $ fastboot -w
  5. Reboot:
    $ fastboot reboot
На Android 10 или более новых устройств , которые имеют меньшие системные разделы, следующее сообщение об ошибке может появиться при Перепрограммирование GSI:
    Resizing 'system_a'    FAILED (remote: 'Not enough space to resize partition')
    fastboot: error: Command failed
Используйте следующую команду , чтобы удалить раздел продукции и освободить пространство для системного раздела. Это обеспечивает дополнительное пространство для перепрограммирования GSI:
$ fastboot delete-logical-partition product_a
Постфиксная _a должна соответствовать идентификатору слота системного раздела, таким как system_a в этом примере.

Вклад в GSI

Android приветствует ваш вклад в развитие GSI. Вы можете принять участие и помочь улучшить GSI:

  • Создание патча GSI. DESSERT -gsi не является веткой разработки и принимает только cherrypicks от главной ветви AOSP, поэтому представить патч GSI, вы должны:
    1. Отправить патч для AOSP master отрасли.
    2. Cherrypick патч к DESSERT -gsi .
    3. Сообщите об ошибке, чтобы получить отзыв о Cherrypick.
  • Отчетность GSI ошибок или делать другие предложения. Просмотрите инструкции в Сообщения об ошибках , а затем просмотреть или файл GSI ошибки .

подсказки

Изменение режима панели навигации с помощью adb

При загрузке с GSI режим панели навигации настраивается производителем. Вы можете изменить режим панели навигации, выполнив следующую команду adb во время выполнения.

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

Где mode может быть threebutton , twobutton , gestural , и так далее.