Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Sistem File Tambahan

Incremental File System (IncFS) adalah modul kernel yang memungkinkan OS Android menerima APK yang dialirkan melalui Android Debug Bridge (ADB). Modul kernel mandiri membuat sistem file virtual baru yang berada di atas sistem File Android yang ada dan melengkapi perubahan dalam kerangka kerja Android 11 dan SDK untuk memungkinkan pengembang aplikasi dan game menerapkan APK besar melalui ADB ke perangkat Android 11.

Perubahan kernel mengaktifkan format APK Signature Scheme v4 baru , mendukung perubahan framework Android di Android Package Manager, layanan sistem baru, dan perubahan pada Android Debug Bridge.

Penerapan

Produsen OEM dan SoC perlu menambahkan driver kernel baru ke build perangkat Android mereka. Jika driver kernel dibuat sebagai modul, itu dimuat sesuai permintaan. Jika tidak ada aplikasi yang diinstal melalui instalasi inkremental ADB, perangkat tidak memuat driver kernel. Saat membangun sebagai bagian dari citra kernel, driver selalu dimuat.

Driver kernel adalah bagian dari sistem yang lebih besar untuk mengaktifkan penginstalan APK yang dialirkan. Mitra tidak perlu menggunakan kode IncFS persis yang disediakan dalam penerapan contoh. Namun, untuk memastikan pengalaman yang konsisten di seluruh perangkat, mitra harus memastikan penerapan API memiliki sistem file yang memiliki fungsi baca file dan fungsi baca / tulis direktori seperti yang didefinisikan di sini .

Selain itu, implementasi mitra harus memiliki opsi pemasangan dan file khusus yang secara fungsional cocok dengan contoh implementasi IncFS.

Berikut ini menjelaskan perubahan yang diperlukan untuk implementasi:

  • Siapkan mesin pengembangan untuk membangun kernel.
  • Targetkan kernel umum dari cabang common-android-mainline .
    • $ repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
    • $ repo sync
  • Validasi perubahan berikut yang diperlukan untuk IncFS ada di checkout cabang:
  • Tambahkan baris CONFIG_INCREMENTAL_FS=y atau CONFIG_INCREMENTAL_FS=m ke bagian bawah file defconfig . Contohnya dapat ditemukan di tautan berikut:
  • Bangun kernel
  • Sematkan kernel ke dalam build image perangkat Android .
  • Untuk perangkat Android target Anda, tambahkan salah satu baris properti sistem khusus vendor berikut ke file device.mk Anda:
    • Jika Anda menggunakan CONFIG_INCREMENTAL_FS=y
    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=yes
    • Jika Anda menggunakan CONFIG_INCREMENTAL_FS=m
    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
    • Ada contoh file device.mk untuk emulator Android danPixel 4 .
  • Hanya jika menggunakan CONFIG_INCREMENTAL_FS=m , Tambahkan Aturan Linux SE .
    • Buat dan tambahkan file vold.te ke folder perangkat /system/sepolicy/vendor dengan konten berikut:
      • vold.te
      • Izinkan untuk memuat driver sistem file tambahan
      • allow vold self:capability sys_module;
      • allow vold vendor_incremental_module:file r_file_perms;
      • allow vold vendor_incremental_module:system module_load;
    • Tambahkan aturan SE Linux berikut ke file file.te ada yang ditemukan di folder /system/sepolicy/vendor :
      • Contoh file.te file
      • Driver sistem file tambahan
      • type vendor_incremental_module, vendor_file_type, file_type;
    • Tambahkan aturan SE Linux berikut ke file file_contents ada di file_contents /system/sepolicy/vendor :
      • Contoh file file_contents
      • # Incremental file system driver
  • /vendor/lib/modules/incrementalfs\.ko
  • u:object_r:vendor_incremental_module:s0

Implementasi referensi

Ada dua cara untuk mendekati implementasi ini, baik sebagai modul yang dapat dimuat atau sebagai bagian dari imej kernel.

Validasi dan pengujian

Validasi implementasi menggunakan Tes Unit Fitur, CTS, dan GTS.

CTS

GTS

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

Menguji IncFs (Incremental FIle System)

  • Siapkan lingkungan pengembangan.
  • Selesaikan tugas implementasi yang diuraikan di bagian implementasi.
  • Jalankan tes manual berikut:
    • $ mmma system/incremental_delivery/incfs/tests
    • $ atest libincfs-test
    • $ atest IncrementalServiceTest
    • $ atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest

Menguji IncFS dengan Android SDK (ADB dan apksigner)

  • Siapkan lingkungan pengembangan.
  • Selesaikan tugas implementasi yang diuraikan di bagian implementasi.
  • Flash build pada emulator atau perangkat fisik target.
  • Buat atau dapatkan apk yang sudah ada.
  • Buat kunci penandatanganan debug .
  • Tanda tangani apk dengan format tanda tangan v4 dari folder build-tools .
    • $ ./apksigner sign --ks debug.keystore game.apk
  • Instal apk di perangkat dari folder platform-tools .
    • $ ./adb install game.apk
Contoh penginstalan
Gambar 1 : Contoh penginstalan

Di mana tes ini bisa ditemukan?