Google cam kết thúc đẩy công bằng chủng tộc cho các cộng đồng Đen. Xem thế nào.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Hình ảnh hệ thống chung

Hình ảnh hệ thống chung (GSI) là hình ảnh hệ thống với các cấu hình được điều chỉnh cho các thiết bị Android. Nó được coi là một triển khai Android thuần túy với mã Dự án nguồn mở Android (AOSP) chưa sửa đổi mà bất kỳ thiết bị Android nào chạy Android 8.1 trở lên đều có thể chạy thành công.

GSI được sử dụng để chạy các bài kiểm tra VTS và CTS-on-GSI. Hình ảnh hệ thống của thiết bị Android được thay thế bằng GSI sau đó được thử nghiệm với Bộ kiểm tra nhà cung cấp (VTS) và Bộ kiểm tra tương thích (CTS) để đảm bảo rằng thiết bị thực hiện giao diện nhà cung cấp chính xác với phiên bản Android mới nhất.

Để bắt đầu với GSI, hãy xem lại các phần sau để biết chi tiết về cấu hình GSI (và phương sai được phép), các loại (Android GSI và Legacy GSI), và nhị phân của nhà cung cấp và phụ thuộc VNDK . Khi bạn đã sẵn sàng sử dụng GSI, hãy tải xuống và xây dựng GSI cho mục tiêu thiết bị của bạn, sau đó flash GSI sang thiết bị Android.

Cấu hình và phương sai của GSI

Android GSI hiện tại có cấu hình như sau:

  • Treble. GSI bao gồm hỗ trợ đầy đủ cho các thay đổi kiến ​​trúc dựa trên HIDL (còn được gọi là Treble ) được giới thiệu trong Android 8.0, bao gồm hỗ trợ cho các giao diện HIDL . Bạn có thể sử dụng GSI trên mọi thiết bị Android sử dụng giao diện nhà cung cấp HIDL. (Để biết thêm chi tiết, xem Tài nguyên kiến ​​trúc .)
  • Xác nhận khởi động. GSI không bao gồm giải pháp khởi động xác minh (như vboot 1.0 hoặc AVB ). Để flash GSI sang thiết bị khởi chạy trên Android 9 trở về trước, thiết bị phải có phương pháp vô hiệu hóa xác minh khởi động.
  • Hệ thống tập tin. GSI sử dụng hệ thống tệp ext4.
  • Bố cục phân vùng. GSI sử dụng bố trí phân vùng hệ thống gốc .

Android GSI hiện tại bao gồm các phương sai chính sau:

  • Kiến trúc CPU. Hỗ trợ các hướng dẫn CPU khác nhau (ARM, x86, v.v.) và độ bit của CPU (32 bit hoặc 64 bit).

Mục tiêu của GSI cho các thử nghiệm tuân thủ Treble

GSI được sử dụng để kiểm tra tuân thủ được xác định bởi phiên bản Android mà thiết bị khởi chạy cùng.

Loại thiết bị Xây dựng mục tiêu
Thiết bị khởi chạy cùng Android 10 aosp_$arch-user
Thiết bị khởi chạy cùng Android 9 aosp_$arch-userdebug
Thiết bị khởi chạy cùng Android 8.0 hoặc Android 8.1 aosp_$arch_ab-userdebug

Tất cả các GSI được xây dựng từ cơ sở mã Android 10 và mỗi kiến ​​trúc CPU có một nhị phân GSI tương ứng (xem danh sách các mục tiêu xây dựng trong Xây dựng GSI ).

Thay đổi Android 10 GSI

Các thiết bị khởi chạy với Android 10 phải sử dụng GSI Android 10 để kiểm tra tuân thủ. Điều này bao gồm những thay đổi lớn sau đây từ các GSI trước đó:

  • Xây dựng người dùng. GSI có bản dựng người dùng từ Android 10. Trong Android 10, GSI bản dựng người dùng có thể được sử dụng trong thử nghiệm tuân thủ CTS-on-GSI / VTS. Tham khảo thử nghiệm VTS với Debug Ramdisk để biết chi tiết.
  • Định dạng không xác định. GSI với các mục tiêu aosp_$arch được xây dựng với định dạng không xác định. Bạn có thể sử dụng img2simg để chuyển đổi một GSI chưa được định dạng sang định dạng thưa thớt nếu cần thiết.
  • Hệ thống gốc. Mục tiêu xây dựng GSI kế thừa có tên aosp_$arch_a đã bị loại bỏ. Đối với các thiết bị được nâng cấp từ Android 8 hoặc 8.1 lên Android 10 với ramdisk và không phải là hệ thống gốc, hãy sử dụng GSI aosp_$arch_ab kế thừa. Các nâng cấp init trong ramdisk hỗ trợ OEM system.img với hệ thống-as-gốc bố trí.

Để kiểm tra các thiết bị khởi chạy trên Android 9 hoặc 10 bằng CTS-on-GSI, hãy sử dụng các mục tiêu xây dựng Android GSI .

Di sản GSI

Các GSI kế thừa được đặt tên với hậu tố _ab (ví dụ: aosp_arm64_ab ). Các GSI này được xây dựng từ cây nguồn Android 10 nhưng chứa các cấu hình tương thích ngược sau cho các thiết bị được nâng cấp từ Android 8 hoặc 8.1:

  • Không gian người dùng 32 bit + Giao diện liên kết 32 bit. GSI 32 bit có thể tiếp tục sử dụng giao diện liên kết 32 bit.
  • 8,1 đồng. Các thiết bị có thể sử dụng 8.1 VNDK đi kèm.
  • Mount thư mục. Một số thiết bị cũ sử dụng các thư mục làm con trỏ gắn kết (ví dụ: /bluetooth , /firmware/radio/persist ).

Để kiểm tra các thiết bị khởi chạy trên Android 8 hoặc 8.1 bằng CTS-on-GSI, hãy sử dụng các mục tiêu xây dựng GSI kế thừa .

Thay đổi Android 9 GSI

GSI của Android 9 bao gồm những thay đổi lớn sau đây từ các GSI trước đó:

  • Sáp nhập GSI và trình giả lập. GSI được xây dựng từ hình ảnh hệ thống của các sản phẩm giả lập, ví dụ: aosp_arm64aosp_x86 .
  • Hệ thống gốc. Trong các phiên bản trước của Android, các thiết bị không hỗ trợ cập nhật A / B có thể gắn hình ảnh hệ thống trong thư mục /system . Trong Android 9, thư mục gốc của hình ảnh hệ thống được gắn kết là thư mục gốc của thiết bị.
  • Giao diện chất kết dính 64 bit. Trong Android 8.x, GSI 32 bit đã sử dụng giao diện liên kết 32 bit. Android 9 không hỗ trợ giao diện liên kết 32 bit, do đó, cả GSI 32 bit và GSI 64 bit đều sử dụng giao diện liên kết 64 bit.
  • Thi hành đồng. Trong Android 8.1, VNDK là tùy chọn. Bắt đầu từ Android 9, VNDK là bắt buộc, do đó, BOARD_VNDK_VERSION phải được đặt.
  • Hệ thống tài sản tương thích. Android 9 cho phép kiểm tra truy cập cho một thuộc tính hệ thống tương thích ( PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true ).

Thay đổi quản trị viên Android 9

Trong các phiên bản trước của Android, các thiết bị triển khai Keymaster 3 trở xuống được yêu cầu xác minh rằng thông tin phiên bản ( ro.build.version.releasero.build.version.security_patch ) được báo cáo bởi hệ thống đang chạy phù hợp với thông tin phiên bản được báo cáo bởi bộ nạp khởi động. Thông tin như vậy thường được lấy từ tiêu đề hình ảnh khởi động.

Trong Android 9 trở lên, yêu cầu này đã thay đổi để cho phép các nhà cung cấp khởi động GSI. Cụ thể, Keymaster không nên thực hiện xác minh vì thông tin phiên bản được báo cáo bởi GSI có thể không khớp với thông tin phiên bản được báo cáo bởi bộ tải khởi động của nhà cung cấp. Đối với các thiết bị triển khai Keymaster 3 trở xuống, các nhà cung cấp phải sửa đổi triển khai Keymaster để bỏ qua xác minh (hoặc nâng cấp lên Keymaster 4). Để biết chi tiết về Keymaster, hãy tham khảo Keystore được hỗ trợ bằng phần cứng .

Nhị phân nhà cung cấp và phụ thuộc VNDK

Các thiết bị nâng cấp lên Android 10 có các đường nâng cấp khác nhau tùy thuộc vào phiên bản nhị phân của nhà cung cấp được sử dụng trên thiết bị và các cấu hình liên quan đến VNDK được sử dụng để xây dựng thiết bị. Bảng sau đây tóm tắt hỗ trợ GSI kế thừa cho các thiết bị được nâng cấp.

Ca sử dụng Nhà cung cấp
nhị phân
phiên bản
BOARD_VNDK_VERSION Di sản GSI
phiên bản nhị phân hệ thống
Hỗ trợ GSI kế thừa
0 8,0 (bất kì) 10 Không
1 8.1 (trống) 10 Không
2 8.1 current 10 Đúng
3 10 current 10 Đúng

Trường hợp sử dụng được hỗ trợ phổ biến nhất là # 2, trong đó các thiết bị hỗ trợ GSIs cũ chạy Android 8.1 được xây dựng với BOARD_VNDK_VERSION được đặt thành current .

Trường hợp # 1 không được hỗ trợ. Trong trường hợp này, các GSI kế thừa KHÔNG hỗ trợ các thiết bị chạy Android 8.1 trong đó BOARD_VNDK_VERSION bị bỏ qua khỏi bản dựng. Các thiết bị này không thể được hỗ trợ vì các nhị phân nhà cung cấp của chúng phụ thuộc vào các thư viện chia sẻ không phải là đồng 8.1 của Android 8.1, không bao gồm trong các GSI cũ. Để làm cho các thiết bị này tương thích với GSI cũ, bạn phải thực hiện một trong các cách sau:

  • Kích hoạt BOARD_VNDK_VERSION mà không cần BOARD_VNDK_RUNTIME_DISABLE (trường hợp sử dụng # 2).

    HOẶC LÀ

  • Cổng / nâng cấp các nhị phân của nhà cung cấp để phụ thuộc vào các thư viện dùng chung từ Android 10 (trường hợp sử dụng # 3).

Đang tải xuống GSI

Bạn có thể tải xuống các GSI dựng sẵn từ trang web tích hợp liên tục (CI) AOSP tại ci.android.com . Nếu loại GSI cho nền tảng phần cứng của bạn không có sẵn để tải xuống, hãy tham khảo phần sau để biết chi tiết về cách xây dựng GSI cho các mục tiêu cụ thể.

Xây dựng GSI

Bắt đầu với Android 9, mỗi phiên bản Android có một nhánh GSI có tên DESSERT -gsi trên AOSP (ví dụ: android10-gsi là nhánh GSI trên Android 10). Các chi nhánh của GSI bao gồm nội dung của Android với tất cả các bản vá bảo mậtcác bản vá GSI được áp dụng.

Để xây dựng GSI, hãy thiết lập cây nguồn Android bằng cách tải xuống từ nhánh GSI và chọn mục tiêu xây dựng GSI . Sử dụng các bảng mục tiêu xây dựng bên dưới để xác định phiên bản GSI chính xác cho thiết bị của bạn. Sau khi quá trình xây dựng hoàn tất, GSI là hình ảnh hệ thống (nghĩa là system.img ) và xuất hiện trong thư mục đầu out/target/product/ generic_arm64 . Bản dựng cũng xuất ra vbmeta.img , mà bạn có thể sử dụng để tắt xác minh khởi động trên các thiết bị bằng Android xác minh khởi động .

Ví dụ, để xây dựng GSI xây dựng mục tiêu aosp_arm64-userdebug trên cành GSI android10-gsi , chạy các lệnh sau.

$ 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

Mục tiêu xây dựng Android GSI

Các mục tiêu xây dựng GSI sau đây dành cho các thiết bị khởi chạy trên Android 9 trở lên. Do giảm phương sai giữa các kiến ​​trúc, Android 10 chỉ bao gồm bốn sản phẩm GSI.

Tên GSI Vòm CPU Giao diện bitinder Hệ thống gốc Xây dựng mục tiêu
aosp_arm CÁNH TAY 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

Mục tiêu xây dựng GSI kế thừa

Các mục tiêu xây dựng GSI kế thừa sau đây dành cho các thiết bị nâng cấp từ Android 8.0 hoặc 8.1 lên Android 10. Tên GSI kế thừa bao gồm hậu tố _ab để phân biệt chúng với tên GSI của Android 10.

Tên GSI Vòm CPU Giao diện bitinder Hệ thống gốc Xây dựng mục tiêu
aosp_arm_ab CÁNH TAY 32 Y aosp_arm_ab-userdebug
aosp_arm_64b_ab CÁNH TAY 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

Yêu cầu đối với GSI nhấp nháy

Các thiết bị Android có thể có các thiết kế khác nhau, do đó không có lệnh chung hoặc bộ hướng dẫn để flash GSI để áp dụng cho tất cả các thiết bị. Kiểm tra với nhà sản xuất thiết bị Android để biết hướng dẫn nhấp nháy rõ ràng. Sử dụng các bước sau đây làm hướng dẫn chung:

  1. Đảm bảo rằng thiết bị có các mục sau:
    • Treblized
    • Phương pháp mở khóa thiết bị (để có thể flash chúng bằng fastboot )
    • Phương pháp vô hiệu hóa xác minh khởi động (ví dụ: vboot 1.0 hoặc AVB )
    • Trạng thái được mở khóa để làm cho nó có thể flash được thông qua fastboot (Để đảm bảo rằng bạn có phiên bản fastboot mới nhất, hãy xây dựng nó từ cây nguồn Android.)
  2. Vô hiệu hóa xác minh khởi động.
  3. Xóa phân vùng hệ thống hiện tại, sau đó flash GSI vào phân vùng hệ thống.
  4. Xóa dữ liệu người dùng và xóa dữ liệu khỏi các phân vùng cần thiết khác (ví dụ: dữ liệu người dùng và phân vùng hệ thống).
  5. Khởi động lại thiết bị.

Ví dụ: để flash GSI cho bất kỳ thiết bị Pixel nào:

  1. Khởi động vào chế độ fastbootmở khóa bộ nạp khởi động . Các thiết bị hỗ trợ fastbootd cũng cần khởi động vào fastbootd bằng cách:
    $ fastboot reboot fastboot
  2. Vô hiệu hóa xác minh khởi động (AVB) bằng cách nhấp nháy vbmeta.img :
    $ fastboot --disable-verification flash vbmeta vbmeta.img
  3. Xóa và flash GSI vào phân vùng hệ thống:
    $ fastboot erase system
    $ fastboot flash system system.img
    
  4. Xóa dữ liệu người dùng và xóa dữ liệu khỏi các phân vùng cần thiết khác (ví dụ: dữ liệu người dùng và phân vùng hệ thống):
    $ fastboot -w
  5. Khởi động lại:
    $ fastboot reboot
Trên các thiết bị Android 10 có phân vùng hệ thống nhỏ hơn, thông báo lỗi sau có thể xuất hiện khi flash GSI:
    Resizing 'system_a'    FAILED (remote: 'Not enough space to resize partition')
    fastboot: error: Command failed
Sử dụng lệnh sau để xóa phân vùng sản phẩm và giải phóng không gian cho phân vùng hệ thống. Điều này cung cấp thêm không gian để flash GSI:
$ fastboot delete-logical-partition product_a
Postfix _a phải khớp với id vị trí của phân vùng hệ thống, chẳng hạn như system_a trong ví dụ này.

Đóng góp cho GSI

Android hoan nghênh những đóng góp của bạn cho sự phát triển của GSI. Bạn có thể tham gia và giúp cải thiện GSI bằng cách:

  • Tạo một bản vá GSI. DESSERT -gsi không phải là một nhánh phát triển và chỉ chấp nhận cherrypicks từ nhánh chính AOSP, vì vậy, để gửi một bản vá GSI, bạn phải:
    1. Gửi bản vá cho chi nhánh master AOSP .
    2. Cherrywer các bản vá để DESSERT -gsi .
    3. Nộp một lỗi để nhận được cherrypick.
  • Báo cáo lỗi GSI hoặc đưa ra các đề xuất khác. Xem lại hướng dẫn trong Báo cáo lỗi , sau đó duyệt hoặc gửi lỗi GSI .

Lời khuyên

Thay đổi chế độ thanh điều hướng bằng adb

Khi khởi động bằng GSI, chế độ thanh điều hướng được cấu hình bởi nhà cung cấp ghi đè. Bạn có thể thay đổi chế độ thanh điều hướng bằng cách chạy lệnh adb sau trong thời gian chạy.

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

Trong đó mode có thể là threebutton , twobutton , gestural , vân vân.