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 üzerine oturan yeni bir sanal dosya sistemi oluşturur. Bu, uygulama ve oyun geliştiricilerinin Android 11 veya sonraki sürümlerde çalışan bir cihaza büyük APK'ları ADB aracılığıyla dağıtmaları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 formatı sağlar 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, isteğe bağlı olarak yüklenir. ADB artımlı yüklemesi yoluyla yüklenmiş 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 yüklemelerini 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 IncFS kodunu kullanmasına gerek yoktur. Ancak, cihazlar arasında tutarlı bir deneyim sağlamak için, API uygulamasının, Artımlı FS belgeleri için Kullanıcı Alanı arayüzünde 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ın, IncFS örnek uygulamasıyla işlevsel olarak eşleşen bağlama seçenekleri ve özel dosyaları 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 kasasında olduğunu doğrulayın:
  4. defconfig dosyasının altına CONFIG_INCREMENTAL_FS=y veya yalnızca Android 11 için CONFIG_INCREMENTAL_FS=m ekleyin. Bir örnek görmek için aşağıdaki bağlantılardan birine tıklayın:
  5. Çekirdeği oluştur
  6. Çekirdeği Android cihaz görüntüsü derlemesine gömün.
  7. Hedef Android cihazınız için aşağıdaki satıcıya özel sistem özelliği satırlarından birini device.mk dosyanıza ekleyin ( Android 12 ve sonraki sürümlerde isteğe bağlı ):
  8. CONFIG_INCREMENTAL_FS=y kullanırken, dosyayı şunlardan biriyle ekleyin:

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

    CONFIG_INCREMENTAL_FS=m ( yalnızca Android 11 için ) kullanırken, dosyayı şunlardan biriyle ekleyin:

    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
  9. Android öykünücüsü 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ı 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ı - Bir ö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 dosyası - Ö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ükseltme yapan cihazlar, IncFS sürücüsünün daha eski bir sürümünü içerebilir. Bu aygıtlar için AOSP, aşağıdaki nedenlerle IncFS sürücüsünü geçerli 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ın akış yüklemeleri 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, akıcı ilerleme animasyonları, hassas disk alanı kullanımı raporlaması ve üçüncü taraf uygulama akışı parazitinin önlenmesi ile akış için geliştirilmiş 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ü, orijinal ancak şimdi yükseltilmiş Android 11 ile aynı şekilde, çekirdek görüntüsünün yerleşik bir parçası olarak veya ayrı bir modül olarak kullanmaya devam edin. Sistem kartını veya sistem özelliği yapılandırmasını değiştirmeyin.

GKI çekirdek görüntüsü 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 desteklenmez. Yalnızca yükseltmeler için veya orijinal çekirdek zaten bir modül olarak oluşturduğunda 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 Emulator (çekirdek görüntüsünün bir parçası olarak)

Doğrulama ve test

Özellik Birimi Testleri, CTS ve GTS'yi 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 özetlenen 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

Android SDK ile IncFS nasıl test edilir (ADB ve apksigner)

  • Bir geliştirme ortamı kurun .
  • Uygulama bölümünde özetlenen uygulama görevlerini tamamlayın.
  • Derlemeyi hedef bir fiziksel cihazda veya öykünücüde flaşlayın.
  • Mevcut bir APK oluşturun veya edinin.
  • Bir hata ayıklama imzalama anahtarı oluşturun.
  • APK'yı build-tools klasöründen 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
Kurulum örneği
Şekil 1 : Kurulum örneği

Bu testleri bulun