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 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 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:
- Çekirdeği oluşturmak için geliştirme makinesini kurun .
-
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 kasasında olduğunu doğrulayın:
- https://android-review.googlesource.com/c/kernel/common/+/1222869/
- https://android-review.googlesource.com/c/kernel/common/+/1222870
- https://android-review.googlesource.com/c/kernel/common/+/1222871
- https://android-review.googlesource.com/q/%2522ANDROID:+Incremental+fs:%2522+branch:android-mainline+status:merg
-
defconfig
dosyasının altınaCONFIG_INCREMENTAL_FS=y
veya yalnızca Android 11 içinCONFIG_INCREMENTAL_FS=m
ekleyin. Bir örnek görmek için aşağıdaki bağlantılardan birine tıklayın: - Çekirdeği oluşturun
- Çekirdeği Android cihaz görüntüsü derlemesine gömün.
- 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ı ): -
PRODUCT_PROPERTY_OVERRIDES += \
-
ro.incremental.enable=yes
-
PRODUCT_PROPERTY_OVERRIDES += \
-
ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
- Android öykünücüsü ve Pixel 4 için örnek
device.mk
dosyalarına bakın. - Yalnızca Android 11 için :
CONFIG_INCREMENTAL_FS=m
kullanıyorsanız, SE Linux Kuralları ekleyin. -
vold.te
-
allow vold self:capability sys_module;
-
allow vold vendor_incremental_module:file r_file_perms;
-
allow vold vendor_incremental_module:system module_load;
-
file.te
dosyası - Bir örnek için bufile.te
dosyasına bakın.) - Artımlı dosya sistemi sürücüsü
-
type vendor_incremental_module, vendor_file_type, file_type;
-
file_contents
dosyası - Bir örnek için bufile_contents
dosyasına bakın. -
# Incremental file system driver
-
/vendor/lib/modules/incrementalfs\.ko
-
u:object_r:vendor_incremental_module:s0
CONFIG_INCREMENTAL_FS=y
kullanırken, dosyayı şunlardan biriyle ekleyin:
CONFIG_INCREMENTAL_FS=m
( yalnızca Android 11 için ) kullanırken, dosyayı şunlardan biriyle ekleyin:
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:
Artımlı dosya sistemi sürücüsünü yüklemesine izin verin:
/system/sepolicy/vendor
klasörünüzde bulunan mevcut file.te
dosyasına aşağıdaki SE Linux kurallarını ekleyin:
/system/sepolicy/vendor
klasörünüzde bulunan mevcut file_contents
dosyasına aşağıdaki SE Linux kurallarını ekleyin:
Ç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ış girişiminin ö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:
- Çekirdek 4.14 yaması
- Çekirdek 4.19 yaması
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.
- Çekirdek 4.14 v1 sürücüsüne düzeltme
- v1 drivr için Çekirdek 4.19 düzeltmesi
- Çekirdek 5.4 v1 sürücüsüne düzeltme
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ı)- Önceden Oluşturulmuş Çekirdek Modülü Ekleme
- Cihazda Çekirdek Modülü Sistem Özellik Değişikliği Ekleme ve Etkinleştirme
- SE Linux Kurallarını Güncelle
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
- Bir geliştirme ortamı kurun .
- 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
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

Bu testleri bulun
- /android/çekirdek/ortak/araçlar/test/kendi kendine testler/dosya sistemleri/incfs/
- /android/system/incremental_delivery/incfs/tests/incfs_test.cpp
- /android/cts/testler/testler/content/src/android/content/pm/cts/PackageManagerShellCommandIncrementalTest.java