Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Hệ thống tệp tăng dần

Mô-đun nhân Hệ thống tệp tăng dần (IncFS) được giới thiệu trong Android 11 cho phép Hệ điều hành Android nhận APK truyền trực tuyến qua Cầu gỡ lỗi Android (ADB).

Mô-đun hạt nhân độc lập này tạo ra một hệ thống tệp ảo mới nằm trên hệ thống tệp Android hiện có. Điều này bổ sung cho những thay đổi trong khung và SDK để cho phép các nhà phát triển ứng dụng và trò chơi triển khai các APK lớn thông qua ADB cho một thiết bị chạy trên Android 11 trở lên.

Sự thay đổi kernel cho phép một mới apk Chữ ký định dạng v4 Đề án và hỗ trợ thay đổi khuôn khổ Android trong Package Manager Android, hệ thống dịch vụ mới, và thay đổi với ADB.

Thực hiện

Để triển khai IncFS, các nhà sản xuất OEM và SoC phải thêm trình điều khiển hạt nhân mới vào các bản dựng thiết bị Android của họ.

Đối với Android 11 mà thôi, nếu người lái xe kernel được xây dựng như một module nó nạp theo yêu cầu. Nếu không có bất kỳ ứng dụng nào được cài đặt thông qua cài đặt gia tăng ADB, thiết bị sẽ không tải trình điều khiển hạt nhân.

Mặt khác, khi nó được xây dựng như một phần của ảnh hạt nhân, trình điều khiển luôn được tải. Thực hiện này có giá trị dành cho Android 12 và cao hơn, và có thể được sử dụng với Android 11. Để biết thông tin về việc nâng cấp trình điều khiển hạt nhân cho Android 12, xem nâng cấp trình điều khiển hạt nhân .

Trình điều khiển hạt nhân là một phần của hệ thống lớn hơn để cho phép cài đặt APK trực tuyến. OEM và nhà cung cấp không cần sử dụng mã IncFS chính xác được cung cấp trong các triển khai mẫu. Tuy nhiên, để đảm bảo một trải nghiệm nhất quán trên các thiết bị, bạn phải đảm bảo việc thực hiện API có một hệ thống tập tin mà có chức năng tập đọc và thư mục chức năng đọc-ghi theo quy định tại các giao diện Userspace cho Incremental FS tài liệu.

Thêm vào đó, việc triển khai phải có tùy chọn gắn kếttập tin đặc biệt mà về mặt chức năng phù hợp với IncFS thực hiện mẫu.

Sau đây liệt kê những thay đổi cần thiết để triển khai:

  1. Thiết lập máy phát triển để xây dựng hạt nhân.
  2. Nhắm mục tiêu hạt nhân chung từ common-android-mainline chi nhánh.
    repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
    repo sync
  3. Xác thực rằng các thay đổi sau đây cần thiết cho IncFS có trong kiểm tra chi nhánh:
  4. Nối hai CONFIG_INCREMENTAL_FS=y hoặc dành cho Android 11 chỉ, CONFIG_INCREMENTAL_FS=m ở dưới cùng của defconfig tập tin. Để xem ví dụ, hãy nhấp vào một trong các liên kết bên dưới:
  5. Xây dựng nhân
  6. Nhúng hạt nhân vào Android xây dựng hình ảnh thiết bị .
  7. Đối với mục tiêu thiết bị Android của bạn, append một trong những dây chuyền hệ thống sở hữu nhà cung cấp cụ sau đây để bạn device.mk tập tin (không bắt buộc trong Android 12 trở lên):
  8. Khi bạn đang sử dụng CONFIG_INCREMENTAL_FS=y , append tập tin với một trong những:

    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=yes

    Khi bạn đang sử dụng CONFIG_INCREMENTAL_FS=m (dành cho Android 11 chỉ), append tập tin với một trong những:

    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
  9. Xem ví dụ device.mk file cho giả lập Android và Pixel 4 .
  10. Đối với Android 11 chỉ: Nếu bạn đang sử dụng CONFIG_INCREMENTAL_FS=m , thêm SE Rules Linux .
  11. Tạo và thêm một vold.te tập tin vào thiết bị của bạn /system/sepolicy/vendor thư mục với các nội dung sau đây:

    • vold.te

    Cho phép nó tải trình điều khiển hệ thống tệp tăng dần:

    • allow vold self:capability sys_module;
    • allow vold vendor_incremental_module:file r_file_perms;
    • allow vold vendor_incremental_module:system module_load;

    Nối các quy tắc SE Linux sau vào hiện file.te tập tin được tìm thấy trong mình /system/sepolicy/vendor thư mục:

    • file.te tập tin - Đối với một ví dụ thấy điều này file.te tập tin ).
    • Trình điều khiển hệ thống tệp tăng dần
    • type vendor_incremental_module, vendor_file_type, file_type;

    Nối các quy tắc SE Linux sau để hiện file_contents tập tin được tìm thấy trong mình /system/sepolicy/vendor thư mục:

    • file_contents tập tin - Đối với một ví dụ, hãy xem file_contents tập tin.
    • # Incremental file system driver
    • /vendor/lib/modules/incrementalfs\.ko
    • u:object_r:vendor_incremental_module:s0

Nâng cấp trình điều khiển nhân

Các thiết bị nâng cấp lên Android 12 có thể bao gồm phiên bản cũ hơn của trình điều khiển IncFS. Đối với những thiết bị đó, AOSP khuyên bạn nên cập nhật trình điều khiển IncFS lên phiên bản hiện tại (trong trường hợp này là v2) vì những lý do sau:

  • Phiên bản được phát hành cùng với Android 11 là bản triển khai ban đầu của IncFS, chỉ được nhắm mục tiêu để hỗ trợ cài đặt ADB.
  • Android 12 sử dụng trình điều khiển IncFS để phát trực tuyến các cài đặt Play trò chơi, điều này yêu cầu các tính năng mới và tối ưu hóa của IncFS v2 để có trải nghiệm người dùng tốt hơn.
  • V1 hỗ trợ phát trực tuyến trò chơi, nhưng làm như vậy sẽ bị phạt hiệu suất và sử dụng pin, CPU và RAM cao hơn v2.
  • V2 cung cấp trải nghiệm người dùng được cải thiện để phát trực tuyến, với hoạt ảnh tiến trình mượt mà, báo cáo sử dụng dung lượng ổ đĩa chính xác và ngăn chặn sự can thiệp vào luồng ứng dụng của bên thứ ba.

Để nâng cấp trình điều khiển IncFS trong nhân của bạn, hãy áp dụng các bản vá sau cho nhân 4.14 hoặc nhân 4.19:

Đối với tất cả các phiên bản nhân tùy chỉnh khác, vui lòng chuyển một trong các bản vá. Họ chỉ ảnh hưởng đến fs/incfs thư mục và áp dụng sạch vào mã v1 hiện có.

Tiếp tục sử dụng trình điều khiển IncFS theo cách tương tự như đối với Android 11 gốc nhưng hiện đã được nâng cấp, dưới dạng một phần tích hợp sẵn của hình ảnh hạt nhân hoặc dưới dạng một mô-đun riêng biệt. Không thay đổi bảng hệ thống hoặc cấu hình thuộc tính hệ thống.

Các thiết bị mới sử dụng ảnh hạt nhân GKI sẽ tự động nhận được trình điều khiển IncFS (v2) mới nhất, được định cấu hình như một phần của ảnh hạt nhân. Điều này không yêu cầu các bước bổ sung.

Cấu hình mô-đun có thể tải không được dùng trong Android 12 và không được hỗ trợ cho các thiết bị mới. Nó chỉ được phép nâng cấp hoặc đóng băng hình ảnh của nhà cung cấp khi hạt nhân ban đầu đã được xây dựng dưới dạng mô-đun.

Triển khai tham chiếu

Thực hiện điều này có thể được coi là một trong hai như là một phần của một hình ảnh hạt nhân, hoặc (dành cho Android chỉ có 11) như là một mô-đun có thể nạp được.

Mô-đun có thể tải được (thiết bị Pixel 4) Trình giả lập Android (như một phần của hình ảnh hạt nhân)

Xác nhận và thử nghiệm

Xác thực việc triển khai bằng Kiểm tra Đơn vị Tính năng, CTS và GTS.

CTS

Sử dụng CtsIncrementalInstallHostTestCases .

GTS

atest GtsIncrementalInstallTestCases :

/gts-tests/tests/packageinstaller/incremental/src/com/google/android/packageinstaller/incremental/gts/IncrementalInstallerTest.java

Kiểm tra IncFS

  1. Thiết lập một môi trường phát triển.
  2. Hoàn thành các nhiệm vụ thực hiện được nêu trong phần thực hiện.
  3. Chạy thử nghiệm của nhãn hiệu sau:
    mmma system/incremental_delivery/incfs/tests
    atest libincfs-test
    atest IncrementalServiceTest
    atest PackageManagerShellCommandTest
    PackageManagerShellCommandIncrementalTest

Cách kiểm tra IncFS với Android SDK (ADB và apksigner)

  • Thiết lập một môi trường phát triển.
  • Hoàn thành các nhiệm vụ thực hiện được nêu trong phần thực hiện.
  • Flash bản dựng trên thiết bị vật lý mục tiêu hoặc trình mô phỏng.
  • Tạo hoặc lấy APK hiện có.
  • Tạo một chìa khóa debug ký .
  • Đăng APK với định dạng chữ ký v4 từ build-tools thư mục.
    ./apksigner sign --ks debug.keystore game.apk
  • Cài đặt APK trên thiết bị từ các platform-tools thư mục.
    ./adb install game.apk
Ví dụ về cài đặt
Hình 1: Cài đặt ví dụ

Xác định vị trí các bài kiểm tra này