Mô-đun nhân hệ thống tệp gia tăng (IncFS) ra mắt trong Android 11 cho phép hệ điều hành Android nhận APK được truyền trực tuyến qua Cầu gỡ lỗi Android (ADB).
Mô-đun nhân hệ điều hành độc lập này tạo ra một hệ thống tệp ảo mới bên cạnh 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 Android 11 trở lên.
Việc thay đổi nhân cho phép một phiên bản mới Định dạng Lược đồ chữ ký APK phiên bản 4 và hỗ trợ các thay đổi về khung Android trong Trình quản lý gói Android, các dịch vụ hệ thống mới và những thay đổi đối với ADB.
Triển khai
Để triển khai IncFS, OEM và nhà sản xuất SoC phải thêm nhân hệ điều hành mới trình điều khiển cho bản dựng thiết bị Android của họ.
Chỉ dành cho Android 11, nếu trình điều khiển nhân được tạo dưới dạng một mô-đun mà nó được tải theo yêu cầu. Nếu không có ứng dụng nào được cài đặt thông qua quá trình cài đặt gia tăng ADB, thiết bị không tải trình điều khiển nhân.
Ngược lại, khi cấu hình này được xây dựng như một phần của nhân hình ảnh, trình điều khiển sẽ luôn được tải. Cách triển khai này hợp lệ cho Android 12 trở lên và dùng được với Android 11. Cho thông tin về cách nâng cấp trình điều khiển nhân hệ điều hành lên Android 12, hãy xem Nâng cấp trình điều khiển kernel.
Trình điều khiển nhân hệ điều hành là một phần của một hệ thống lớn hơn để cho phép phát trực tuyến tệp APK cài đặt. OEM và nhà cung cấp không cần phải 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 trải nghiệm nhất quán trên thiết bị, bạn phải đảm bảo việc triển khai API có hệ thống tệp có chức năng đọc tệp và chức năng đọc-ghi thư mục dưới dạng xác định trong tài liệu về Giao diện không gian người dùng cho Dịch vụ tài chính gia tăng.
Ngoài ra, quá trình triển khai phải có tuỳ chọn gắn kết và các tệp đặc biệt có chức năng phù hợp với cách triển khai mẫu IncFS.
Sau đây là những thay đổi cần thiết để triển khai:
- Thiết lập máy phát triển để tạo nhân.
- Nhắm đến nhân hệ điều hành chung từ nhánh
common-android-mainline
.repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
repo sync
- Kiểm tra để đảm bảo những thay đổi cần thiết sau đây cho IncFS nằm trong thanh toán chi nhánh:
- https://android-review.googlesource.com/c/kernel/common/+/1222869/
- https://android-review.googlesource.com/c/kernel/common/+/1222870
- https://android-review.googlesource.com/c/kernel/common/+/1222871
- https://android-review.googlesource.com/q/%2522ANDROID:+Tăng+fs:%2522+branch:android-mainline+status:merg
- Thêm
CONFIG_INCREMENTAL_FS=y
hoặc chỉ dành cho Android 11,CONFIG_INCREMENTAL_FS=m
ở cuối tệpdefconfig
. Để xem ví dụ, hãy nhấp vào một trong các đường liên kết bên dưới: - Xây dựng nhân hệ điều hành
- Nhúng nhân hệ điều hành vào bản dựng hình ảnh thiết bị Android.
- Đối với thiết bị Android mục tiêu của bạn, hãy thêm một trong các đoạn mã dành riêng cho nhà cung cấp sau đây
các dòng thuộc tính hệ thống vào tệp
device.mk
của bạn (không bắt buộc trên các thiết bị chạy Android 12 trở lên): PRODUCT_PROPERTY_OVERRIDES += \
ro.incremental.enable=yes
PRODUCT_PROPERTY_OVERRIDES += \
ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
- Hãy xem các tệp
device.mk
ví dụ cho trình mô phỏng Android và Pixel 4. - Chỉ dành cho Android 11: Nếu bạn đang sử dụng
CONFIG_INCREMENTAL_FS=m
, hãy thêm Quy tắc của SE Linux. vold.te
allow vold self:capability sys_module;
allow vold vendor_incremental_module:file r_file_perms;
allow vold vendor_incremental_module:system module_load;
-
Tệp
file.te
– Để biết ví dụ, hãy xem tệpfile.te
này.) - Trình điều khiển hệ thống tệp gia tăng
type vendor_incremental_module, vendor_file_type, file_type;
-
Tệp
file_contents
– Để biết ví dụ, hãy xem tệpfile_contents
này. # Incremental file system driver
/vendor/lib/modules/incrementalfs\.ko
u:object_r:vendor_incremental_module:s0
Khi bạn đang sử dụng CONFIG_INCREMENTAL_FS=y
, hãy thêm tệp với
một trong các cột sau:
Khi bạn dùng CONFIG_INCREMENTAL_FS=m
(chỉ dành cho Android 11),
nối tệp với một trong các lệnh sau:
Tạo và thêm một tệp vold.te
vào thiết bị
Thư mục /system/sepolicy/vendor
có nội dung sau:
Cho phép ứng dụng tải trình điều khiển hệ thống tệp gia tăng:
Thêm các quy tắc SE Linux sau vào tệp file.te
hiện có
được tìm thấy trong thư mục /system/sepolicy/vendor
của bạn:
Thêm các quy tắc SE Linux sau vào file_contents
hiện có
tệp được tìm thấy trong thư mục /system/sepolicy/vendor
của bạn:
Nâng cấp trình điều khiển kernel
Các thiết bị nâng cấp lên Android 12 có thể có phiên bản IncFS cũ hơn trình điều khiển. Đối với những thiết bị đó, AOSP khuyến nghị bạ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à phiên bản 2) vì những lý do sau:
- Phiên bản được phát hành cùng với Android 11 là phiên 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 để cài đặt trực tuyến các trò chơi trên Play, Phiên bản này yêu cầu các tính năng và tối ưu hoá mới của IncFS phiên bản 2 để người dùng tốt hơn của bạn.
- Phiên bản 1 hỗ trợ phát trực tuyến trò chơi, nhưng làm như vậy với các hình phạt về hiệu suất và mức sử dụng pin, CPU và RAM cao hơn phiên bản 2.
- V2 cung cấp trải nghiệm người dùng được cải thiện cho quá trình truyền trực tuyến, với hoạt ảnh tiến trình mượt mà, báo cáo chính xác mức sử dụng dung lượng ổ đĩa và ngăn chặn việc truyền trực tuyến ứng dụng của bên thứ ba can thiệp.
Để 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 hạt nhân 4.14 hoặc hạt nhân 4.19:
- Bản vá Kernel 4.14
- Bản vá Kernel 4.19
Đối với tất cả phiên bản nhân tuỳ chỉnh khác, vui lòng chuyển một trong các bộ bản vá. Chúng
chỉ ảnh hưởng đến thư mục fs/incfs
và áp dụng rõ ràng cho
mã v1 hiện có.
- Bản sửa lỗi Kernel 4.14 cho trình điều khiển v1
- Bản sửa lỗi Kernel 4.19 thành drivr v1
- Bản sửa lỗi Kernel 5.4 cho trình điều khiển v1
Tiếp tục sử dụng trình điều khiển IncFS theo cách tương tự như đối với tài liệu gốc nhưng bây giờ đã nâng cấp Android 11, ở 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 thuộc tính hệ thống .
Thiết bị mới sử dụng hình ảnh nhân GKI sẽ nhận được trình điều khiển IncFS (v2) mới nhất tự động, được định cấu hình như một phần của hình ảnh hạt nhân. Bạn không cần các bước bổ sung.
Cấu hình mô-đun có thể tải đã không còn được dùng trong Android 12 và hiện vẫn được hỗ trợ cho các thiết bị mới. Ứng dụng chỉ được phép sử dụng đối với bản nâng cấp hoặc nhà cung cấp bị treo hình ảnh khi hạt nhân ban đầu đã được tạo dưới dạng mô-đun.
Cách triển khai tệp đối chiếu
Việc triển khai này có thể được coi là một phần của hình ảnh hạt nhân, hoặc (đối với Chỉ dành cho Android 11) dưới dạng một mô-đun có thể tải.
Mô-đun có thể tải (thiết bị Pixel 4)- Thêm bản dựng sẵn mô-đun hạt nhân
- Thêm và bật tính năng thay đổi thuộc tính hệ thống của mô-đun hạt nhân trên thiết bị
- Cập nhật quy tắc SE Linux
Xác thực và kiểm thử
Xác thực cách triển khai bằng các phương thức Kiểm thử đơn vị tính năng, CTS và GTS.
CTS (Bộ kiểm tra tính tương thích)
Sử dụng
CtsIncrementalInstallHostTestCases
.
Giao thức truyền tệp (GTS)
atest GtsIncrementalInstallTestCases
:
/gts-tests/tests/packageinstaller/incremental/src/com/google/android/packageinstaller/incremental/gts/IncrementalInstallerTest.java
Kiểm thử IncFS
- Thiết lập môi trường phát triển.
- Hoàn thành các nhiệm vụ triển khai được nêu trong phần triển khai.
- Chạy các kiểm thử thủ công sau đây:
mmma system/incremental_delivery/incfs/tests
atest libincfs-test
atest IncrementalServiceTest
atest PackageManagerShellCommandTest
PackageManagerShellCommandIncrementalTest
Kiểm thử IncFS bằng SDK Android (ADB và apksigner)
- Thiết lập môi trường phát triển.
- Hoàn thành các nhiệm vụ triển khai được nêu trong phần triển khai.
- Cài đặt ROM bản dựng trên một thiết bị thực hoặc trình mô phỏng thực tế mục tiêu.
- Tạo hoặc lấy APK hiện có.
- Tạo khoá ký gỡ lỗi.
- Ký tệp APK bằng định dạng chữ ký v4 trong thư mục
build-tools
../apksigner sign --ks debug.keystore game.apk
- Cài đặt APK trên thiết bị từ
platform-tools
../adb install game.apk
Xác định các chương trình kiểm thử này
- /android/kernel/common/tools/testing/selftests/filesystems/incfs/
- /android/system/tiến_delivery/incfs/tests/incfs_test.cpp
- /android/cts/tests/tests/content/src/android/content/pm/cts/PackageManagerShellCommandIncrementalTest.java