增量文件系統

增量文件系統(IncFS)是一個內核模塊,使Android OS可以通過Android調試橋(ADB)接收流式APK。自包含的內核模塊創建了一個新的虛擬文件系統,該文件系統位於現有的Android文件系統之上,並補充了Android 11框架和SDK中的更改,從而使應用程序和遊戲開發人員可以通過ADB將大型APK部署到Android 11設備。

內核更改啟用了新的APK簽名方案v4格式,支持Android包管理器中的Android框架更改,新的系統服務以及對Android調試橋的更改。

執行

OEM和SoC製造商需要在其Android設備版本中添加新的內核驅動程序。如果內核驅動程序是作為模塊構建的,則將按需加載。如果沒有通過ADB增量安裝安裝任何應用程序,則該設備不會加載內核驅動程序。當構建為內核映像的一部分時,始終會加載驅動程序。

內核驅動程序是一個更大的系統的一部分,以啟用流式APK安裝。合作夥伴無需使用示例實現中提供的確切的IncFS代碼。但是,為了確保跨設備的一致體驗,合作夥伴必須確保API實施具有一個文件系統,該文件系統具有此處定義的文件讀取功能和目錄讀取/寫入功能。

此外,合作夥伴實現必須具有掛載選項和功能上與IncFS示例實現功能匹配的特殊文件

下面介紹了實現所需的更改:

  • /vendor/lib/modules/incrementalfs\.ko
  • u:object_r:vendor_incremental_module:s0

參考實施

有兩種方法可以實現此實現,可以是可加載模塊,也可以是內核映像的一部分。

驗證與測試

使用功能單元測試,CTS和GTS驗證實施。

CTS

GTS

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

測試IncF(增量文件系統)

  • 設置開發環境。
  • 完成實施部分中概述的實施任務。
  • 運行以下手動測試:
    • $ mmma system/incremental_delivery/incfs/tests
    • $ atest libincfs-test
    • $ atest IncrementalServiceTest
    • $ atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest

使用Android SDK測試IncFS(ADB和apksigner)

  • 設置開發環境。
  • 完成實施部分中概述的實施任務。
  • 在目標物理設備或仿真器上刷新構建。
  • 生成或獲取現有的apk。
  • 創建一個調試簽名密鑰
  • 註冊APK從V4簽名格式build-tools文件夾中。
    • $ ./apksigner sign --ks debug.keystore game.apk
  • platform-tools文件夾在設備上安裝apk。
    • $ ./adb install game.apk
安裝示例
圖1 :安裝示例

在哪裡可以找到這些測試?