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:
- Ç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 kontrolünde 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
-
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: - Çekirdeği oluşturun
- Çekirdeği Android cihaz görüntü derlemesine gömün.
- 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 ): -
PRODUCT_PROPERTY_OVERRIDES += \
-
ro.incremental.enable=yes
-
PRODUCT_PROPERTY_OVERRIDES += \
-
ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
- Android emülatörü 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ı'nı 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ı - Ö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
file - 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, dosyaya şunlardan birini ekleyin:
CONFIG_INCREMENTAL_FS=m
( yalnızca Android 11 için) kullanırken, dosyanın sonuna şunlardan birini 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ü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:
- Ç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
- Çekirdek 4.19, v1 sürücüsüne düzeltme
- Çekirdek 5.4 v1 sürücüsüne düzeltme
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ı)- Çekirdek Modülü Hazır Yapılarını Ekleyin
- Cihazda Çekirdek Modülü Sistem Özelliği Değişikliği Ekleme ve Etkinleştirme
- SE Linux Kurallarını Güncelleyin
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
- Bir geliştirme ortamı kurun .
- Uygulama bölümünde belirtilen 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 (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

Bu testleri bulun
- /android/kernel/common/tools/testing/selftests/filesystems/incfs/
- /android/system/incremental_delivery/incfs/tests/incfs_test.cpp
- /android/cts/tests/tests/content/src/android/content/pm/cts/PackageManagerShellCommandIncrementalTest.java