Artımlı Dosya Sistemi

Android 11'de sunulan 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 kendi kendine yeten çekirdek modülü, mevcut Android dosya sisteminin üstünde yer alan yeni bir sanal dosya sistemi oluşturur. Bu, uygulama ve oyun geliştiricilerinin büyük APK'ları ADB aracılığıyla Android 11 veya daha yenisini çalıştıran bir cihaza dağıtmasına olanak tanıyan çerçeve ve SDK'daki değişiklikleri tamamlıyor.

Çekirdek değişikliği, yeni bir APK İmza Şeması v4 biçimini etkinleştirir ve Android Paket Yöneticisindeki Android çerçeve değişikliklerini, yeni sistem hizmetlerini ve ADB'deki değişiklikleri destekler.

Uygulama

IncFS'yi uygulamak için OEM'lerin ve SoC üreticilerinin Android cihaz yapılarına yeni bir çekirdek sürücüsü eklemesi gerekiyor.

Yalnızca Android 11 için , çekirdek sürücüsü modül olarak oluşturulmuşsa isteğe bağlı olarak yüklenir. ADB artımlı kurulumuyla 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 üzeri 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ı mümkün kılan daha büyük bir sistemin parçasıdır. OEM'lerin ve satıcıların örnek uygulamalarda sağlanan IncFS kodunun aynısını kullanmasına gerek yoktur. Ancak cihazlar arasında tutarlı bir deneyim sağlamak için API uygulamasının, Artımlı FS belgelerine yönelik 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.

Ayrıca uygulamaların, IncFS örnek uygulamasıyla işlevsel olarak eşleşen bağlama seçeneklerine ve özel dosyalara sahip olması gerekir.

Aşağıda uygulama için gerekli değişiklikler listelenmektedir:

  1. Çekirdeği oluşturmak için geliştirme makinesini kurun .
  2. common-android-mainline şubesinden 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 ödemesinde 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şturun
  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ümlerle başlatılan cihazlarda isteğe bağlıdır ):
  8. CONFIG_INCREMENTAL_FS=y kullandığınızda, dosyayı aşağıdakilerden biriyle ekleyin:

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

    CONFIG_INCREMENTAL_FS=m ( yalnızca Android 11 için) kullandığınızda, dosyayı aşağıdakilerden 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ı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;

    Aşağıdaki SE Linux kurallarını /system/sepolicy/vendor klasörünüzde bulunan mevcut file.te dosyasına ekleyin:

    • file.te dosyası - Örnek olarak bu file.te dosyasına bakın.)
    • Artımlı dosya sistemi sürücüsü
    • type vendor_incremental_module, vendor_file_type, file_type;

    Aşağıdaki SE Linux kurallarını /system/sepolicy/vendor klasörünüzde bulunan mevcut file_contents dosyasına ekleyin:

    • file_contents dosyası - Örnek olarak 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 daha eski bir sürümünü içerebilir. AOSP, bu cihazlar için aşağıdaki nedenlerden dolayı IncFS sürücüsünü güncel sürüme (bu durumda v2) güncellemenizi önerir:

  • Android 11 ile yayımlanan sürüm, IncFS'nin yalnızca ADB kurulum desteğine yönelik 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ış kurulumları için IncFS sürücüsünü kullanır.
  • V1, oyun akışını destekler, ancak bunu v2'ye göre performans cezaları ve daha yüksek pil, CPU ve RAM kullanımıyla yapar.
  • V2, sorunsuz ilerleme animasyonları, hassas disk alanı kullanımı raporlaması ve 3. taraf uygulamaların akışa müdahalesinin önlenmesiyle akış için iyileş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ü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ıldı ve yeni cihazlar için desteklenmiyor. Yalnızca yükseltmeler için veya orijinal çekirdekte zaten bir modül olarak oluşturulmuşsa satıcı görüntüsünün dondurulması için izin verilir.

Referans uygulamaları

Bu uygulama, çekirdek görüntüsünün bir 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 Testlerini, 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ı oluşturun .
  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

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

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

Bu testleri bulun