Artımlı Dosya Sistemi

Artımlı Dosya Sistemi (IncFS), Android işletim sisteminin Android Hata Ayıklama Köprüsü (ADB) üzerinden yayınlanan APK'leri almasını sağlayan bir çekirdek modülüdür. Kendi kendine yeten çekirdek modülü, uygulama ve oyun geliştiricilerin büyük APK'ları ADB aracılığıyla bir Android 11 cihazına dağıtmasını sağlamak için mevcut Android Dosya sisteminin üstüne oturan ve Android 11 çerçevesi ve SDK'daki değişiklikleri tamamlayan yeni bir sanal dosya sistemi oluşturur.

Çekirdek değişikliği, yeni bir APK İmza Şeması v4 biçimini etkinleştirir, Android Paket Yöneticisi'ndeki Android çerçeve değişikliklerini, yeni sistem hizmetlerini ve Android Hata Ayıklama Köprüsü'ndeki değişiklikleri destekler.

Uygulama

OEM'ler ve SoC üreticilerinin Android cihaz yapılarına yeni bir çekirdek sürücüsü eklemesi gerekiyor. Çekirdek sürücüsü bir modül olarak oluşturulmuşsa, isteğe bağlı olarak yüklenir. ADB artımlı yükleme yoluyla hiçbir uygulama yüklenmemişse, aygıt çekirdek sürücüsünü yüklemez. Çekirdek görüntüsünün bir parçası olarak oluşturulurken sürücü her zaman yüklenir.

Çekirdek sürücüsü, akışlı APK kurulumlarını etkinleştirmek için daha büyük bir sistemin parçasıdır. İş ortaklarının, örnek uygulamalarda sağlanan IncFS kodunu tam olarak kullanmaları gerekmez. Ancak, cihazlar arasında tutarlı bir deneyim sağlamak için iş ortakları, API uygulamasının burada tanımlandığı gibi dosya okuma işlevine ve dizin okuma / yazma işlevine sahip bir dosya sistemine sahip olmasını sağlamalıdır.

Ek olarak, iş ortağı uygulamaları bağlama seçeneklerine ve IncFS örnek uygulamasıyla işlevsel olarak eşleşen özel dosyalara sahip olmalıdır.

Aşağıda, uygulama için gerekli değişiklikler açıklanmaktadır:

  • Kur inşa çekirdeğe geliştirme makinesidir.
  • common-android-mainline dalından ortak çekirdeği hedefleyin.
    • $ repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
    • $ repo sync
  • IncFS için gerekli olan aşağıdaki değişikliklerin şube çıkışında olduğunu doğrulayın:
  • CONFIG_INCREMENTAL_FS=y veya CONFIG_INCREMENTAL_FS=m satırını defconfig dosyasının altına defconfig . Örnekler aşağıdaki bağlantılarda bulunabilir:
  • Çekirdek oluştur
  • Çekirdeği Android cihaz görüntü yapısına yerleştirin .
  • Hedef Android cihazınız için, aşağıdaki satıcıya özgü sistem özelliği satırlarından birini device.mk dosyanıza ekleyin:
    • CONFIG_INCREMENTAL_FS=y kullanmanız durumunda
    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=yes
    • CONFIG_INCREMENTAL_FS=m kullanmanız durumunda
    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
    • Android öykünücüsü vePixel 4 için örnek device.mk dosyaları vardır.
  • Yalnızca CONFIG_INCREMENTAL_FS=m , SE Linux Kuralları Ekle.
    • Aşağıdaki içeriğe sahip cihaz /system/sepolicy/vendor klasörünüze bir vold.te dosyası oluşturun ve ekleyin:
      • vold.te
      • Artımlı dosya sistemi sürücüsünü yüklemeye izin ver
      • allow vold self:capability sys_module;
      • allow vold vendor_incremental_module:file r_file_perms;
      • allow vold vendor_incremental_module:system module_load;
    • /system/sepolicy/vendor klasörünüzde bulunan mevcut file.te dosyasına aşağıdaki SE Linux kurallarını ekleyin:
      • Örnek file.te dosyası
      • Artımlı dosya sistemi sürücüsü
      • type vendor_incremental_module, vendor_file_type, file_type;
    • /system/sepolicy/vendor klasörünüzde bulunan mevcut file_contents dosyasına aşağıdaki SE Linux kurallarını ekleyin:
      • Örnek file_contents dosyası
      • # Incremental file system driver
  • /vendor/lib/modules/incrementalfs\.ko
  • u:object_r:vendor_incremental_module:s0

Referans uygulamaları

Yüklenebilir bir modül olarak veya bir çekirdek görüntüsünün parçası olarak bu uygulamaya yaklaşmanın iki yolu vardır.

Doğrulama ve test etme

Özellik Birim Testleri, CTS ve GTS kullanarak uygulamayı doğrulayın.

CTS

GTS

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

IncF'leri Test Etme (Artımlı FIle Sistemi)

  • Kur bir geliştirme ortamı.
  • Uygulama bölümünde özetlenen uygulama görevlerini tamamlayın.
  • Aşağıdaki manuel testleri çalıştırın:
    • $ mmma system/incremental_delivery/incfs/tests
    • $ atest libincfs-test
    • $ atest IncrementalServiceTest
    • $ atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest

IncFS'yi Android SDK ile test etme (ADB ve apksigner)

  • Kur bir geliştirme ortamı.
  • Uygulama bölümünde özetlenen uygulama görevlerini tamamlayın.
  • Bir hedef fiziksel cihaz veya emülatörde yapıyı flash.
  • Mevcut bir apk oluşturun veya edinin.
  • Bir hata ayıklama imzalama anahtarı oluşturun .
  • build-tools klasöründen apk'yi v4 imza formatıyla imzalayın .
    • $ ./apksigner sign --ks debug.keystore game.apk
  • platform-tools klasöründen cihaza apk yükleyin .
    • $ ./adb install game.apk
Kurulum örneği
Şekil 1 : Kurulum örneği

Bu testler nerede bulunabilir?