Artımlı Dosya Sistemi

Android 11'de tanıtılan Artımlı Dosya Sistemi (IncFS) çekirdek modülü, Android işletim sisteminin Android Hata Ayıklama Köprüsü (ADB) üzerinden akışlı APK'ları almasını sağlar.

Bu bağımsız çekirdek modülü, mevcut Android dosya sisteminin üzerinde oturan yeni bir sanal dosya sistemi oluşturur. Bu, uygulama ve oyun geliştiricilerin büyük APK'ları ADB aracılığıyla Android 11 veya sonraki sürümlerde çalışan bir cihaza dağıtmasını sağlamak için çerçeve ve SDK'daki değişiklikleri tamamlar.

Çekirdek değişikliği, yeni bir APK Signature Scheme v4 biçimini etkinleştirir ve Android Paket Yöneticisi'ndeki Android çerçeve değişikliklerini, yeni sistem hizmetlerini ve ADB'deki değişiklikleri destekler.

uygulama

IncFS'yi uygulamak için OEM'ler ve SoC üreticileri, Android cihaz yapılarına yeni bir çekirdek sürücüsü eklemelidir.

Yalnızca Android 11 için , çekirdek sürücüsü bir modül olarak oluşturulmuşsa talep üzerine yüklenir. ADB artımlı kurulumu aracılığıyla yüklenen herhangi bir uygulama yoksa, cihaz çekirdek sürücüsünü yüklemez.

Aksi takdirde, çekirdek görüntüsünün bir parçası olarak oluşturulduğunda, sürücü her zaman yüklenir. Bu uygulama Android 12 ve üstü için geçerlidir ve Android 11 ile kullanılabilir . Çekirdek sürücüsünü Android 12'ye yükseltme hakkında bilgi için bkz . Çekirdek sürücüsü yükseltmesi .

Çekirdek sürücüsü, akışlı APK kurulumlarını etkinleştirmek için daha büyük bir sistemin parçasıdır. OEM'lerin ve satıcıların, örnek uygulamalarda sağlanan tam olarak IncFS kodunu kullanmaları gerekmez. Ancak, cihazlar arasında tutarlı bir deneyim sağlamak için API uygulamasının, Artımlı FS belgeleri için Kullanıcı Alanı arabiriminde tanımlandığı gibi dosya okuma işlevine ve dizin okuma-yazma işlevine sahip bir dosya sistemine sahip olduğundan emin olmalısınız.

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

Aşağıdakiler, uygulama için gerekli değişiklikleri listeler:

  1. Çekirdeği oluşturmak için geliştirme makinesini kurun .
  2. common-android-mainline dalından ortak çekirdeği hedefleyin.
    repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
    repo sync
  3. IncFS için gerekli olan aşağıdaki değişikliklerin şube kontrolünde olduğunu doğrulayın:
  4. CONFIG_INCREMENTAL_FS=y veya yalnızca Android 11 için , CONFIG_INCREMENTAL_FS=m defconfig dosyasının altına ekleyin. Bir örnek görmek için aşağıdaki bağlantılardan birini tıklayın:
  5. Çekirdeği oluşturun
  6. Çekirdeği Android cihaz görüntü derlemesine gömün.
  7. Hedef Android cihazınız için, device.mk dosyanıza aşağıdaki satıcıya özel system-property satırlarından birini ekleyin ( Android 12 ve üstü ile başlatılan cihazlarda isteğe bağlıdır ):
  8. CONFIG_INCREMENTAL_FS=y kullanırken, dosyaya şunlardan birini ekleyin:

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

    CONFIG_INCREMENTAL_FS=m ( yalnızca Android 11 için) kullanırken, dosyanın sonuna şunlardan birini ekleyin:

    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
  9. Android emülatörü ve Pixel 4 için örnek device.mk dosyalarına bakın.
  10. Yalnızca Android 11 için : CONFIG_INCREMENTAL_FS=m kullanıyorsanız SE Linux Kuralları'nı ekleyin.
  11. Aşağıdaki içeriğe sahip bir vold.te dosyası oluşturun ve cihazınızın /system/sepolicy/vendor klasörüne ekleyin:

    • vold.te

    Artımlı dosya sistemi sürücüsünü yüklemesine izin verin:

    • 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:

    • file.te dosyası - Örnek için bu file.te dosyasına bakın.)
    • 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:

    • file_contents file - Bir örnek için bu file_contents dosyasına bakın.
    • # Incremental file system driver
    • /vendor/lib/modules/incrementalfs\.ko
    • u:object_r:vendor_incremental_module:s0

Çekirdek sürücüsü yükseltmesi

Android 12'ye yükseltilen cihazlar, IncFS sürücüsünün eski bir sürümünü içerebilir. Bu aygıtlar için AOSP, şu nedenlerle IncFS sürücüsünü güncel sürüme (bu durumda v2) güncellemenizi önerir:

  • Android 11 ile yayınlanan sürüm, yalnızca ADB kurulum desteği için hedeflenen IncFS'nin ilk uygulamasıdır.
  • Android 12, daha iyi bir kullanıcı deneyimi için IncFS v2'nin yeni özelliklerini ve optimizasyonlarını gerektiren Play oyunların akış kurulumları için IncFS sürücüsünü kullanır.
  • V1, oyun akışını destekler, ancak bunu performans cezaları ve v2'den daha yüksek pil, CPU ve RAM kullanımı ile yapar.
  • V2, sorunsuz ilerleme animasyonları, hassas disk alanı kullanım raporlaması ve 3. taraf uygulama akışı girişimini önleme ile akış için gelişmiş UX sağlar.

Çekirdeğinizdeki IncFS sürücüsünü yükseltmek için, çekirdek 4.14 veya çekirdek 4.19 için aşağıdaki yamaları uygulayın:

Diğer tüm özel çekirdek sürümleri için lütfen yama setlerinden birini taşıyın. Yalnızca fs/incfs dizinini etkilerler ve mevcut v1 koduna temiz bir şekilde uygulanırlar.

IncFS sürücüsünü, çekirdek görüntüsünün yerleşik bir parçası veya ayrı bir modül olarak orijinal ancak şimdi yükseltilmiş Android 11 ile aynı şekilde kullanmaya devam edin. Sistem kartını veya sistem özelliği yapılandırmasını değiştirmeyin.

GKI çekirdek görüntüsünü kullanan yeni cihazlar, çekirdek görüntüsünün bir parçası olarak yapılandırılmış en son (v2) IncFS sürücüsünü otomatik olarak alır. Bu, ek adımlar gerektirmez.

Yüklenebilir modül yapılandırması, Android 12'de kullanımdan kaldırılmıştır ve yeni cihazlar için desteklenmemektedir. Yalnızca yükseltmeler için veya orijinal çekirdek zaten bir modül olarak oluşturmuşsa satıcı görüntüsünün donması için izin verilir.

Referans uygulamaları

Bu uygulama, bir çekirdek görüntüsünün parçası olarak veya ( yalnızca Android 11 için ) yüklenebilir bir modül olarak düşünülebilir.

Yüklenebilir modül (Pixel 4 cihazı) Android Emülatörü (çekirdek görüntüsünün bir parçası olarak)

Doğrulama ve test etme

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

CTS

CtsIncrementalInstallHostTestCases kullanın.

GTS

atest GtsIncrementalInstallTestCases :

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

IncFS'yi test edin

  1. Bir geliştirme ortamı kurun .
  2. Uygulama bölümünde belirtilen uygulama görevlerini tamamlayın.
  3. 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 (ADB ve apksigner) ile test etme

  • Bir geliştirme ortamı kurun .
  • Uygulama bölümünde belirtilen uygulama görevlerini tamamlayın.
  • Derlemeyi hedef fiziksel bir cihazda veya öykünücüde güncelleyin.
  • Mevcut bir APK oluşturun veya edinin.
  • Bir hata ayıklama imzalama anahtarı oluşturun.
  • build-tools klasöründen APK'yı v4 imza biçimiyle imzalayın .
    ./apksigner sign --ks debug.keystore game.apk
  • APK'yı platform-tools klasöründen cihaza yükleyin .
    ./adb install game.apk
yükleme örneği
Şekil 1 : Kurulum örneği

Bu testleri bulun