v5.4'ün üzerindeki çekirdek sürümlerini kullanan Android 12 ile başlatılan cihazların GKI çekirdeğiyle birlikte gönderilmesi gerekir. İş ortaklarının, GKI çekirdeğinde geliştirme yaparken userdebug yapılarında DebugFS
erişebilmesi için, GKI defconfig'inde CONFIG_DEBUG_FS
çekirdek yapılandırması etkinleştirilir. Android 12'de başlatılan cihazlar için DebugFS
asla kullanıcı yapılarına bağlamayın .
Userdebug derlemeleri, kullanıcı derlemelerinden daha iyi test kapsamına sahiptir ve geliştirme döngüsü boyunca yoğun şekilde test edilir. Aşağıdaki plan, DebugFS
erişimi açısından iki yapı türü arasındaki farkı en aza indirir ve şu avantajları sağlar:
- Kullanıcı hata ayıklama derlemelerinin yeni işlevsellik için yanlışlıkla
DebugFS
bağımlı olmasını önler - DebugFS eksikliği nedeniyle bozulan mevcut işlevlerin geliştirme döngüsünün başlarında bilinmesini sağlar
Kullanıcı hata ayıklama yapılarındaki hata ayıklama erişimleri aşağıdaki şekilde kategorize edilir:
- Hata ayıklama verileri toplamayı açmak için
DebugFS
bir dosyaya yazma erişimi gibi, aygıt önyüklemesi sırasındaDebugFS
dosyası başlatmaları. - Hata raporu oluşturma: Dumpstate HAL,
DumpstateBoard()
dumpstate
tarafından çağrıldığındaDebugFS
dosyalarını okur. Bu bilgi hata raporunun bir parçası haline gelir. - Cihaza özel test ve doğrulama.
Aşağıdaki tabloda, bu üç kategorinin her birinin Android 12'de nasıl desteklendiği açıklanmaktadır. DebugFS
kullanıcı derlemelerine eklenememesi nedeniyle aşağıdakilerin yalnızca kullanıcı hata ayıklama derlemeleri için geçerli olduğunu unutmayın.
Kullanım örneği | Android 12 kullanıcı hata ayıklama derlemesi |
---|---|
Başlangıç sırasında bir defalık DebugFS dosyalarının başlatılması . Bu erişim, önyükleme sırasında yalnızca bir kez gerçekleşir . | Dumpstate HAL bunu HAL başlatma sırasında gerçekleştirir. Aynısını etkinleştirmek için init, HAL başlatılmadan önce kullanıcı hata ayıklama yapılarına DebugFS bağlar. Init aygıt önyüklemeyi tamamladığında DebugFS umount() öğesini çağırır. |
Hata raporu oluşturma : Döküm durumu HAL, hata raporunun parçası haline gelen DebugFS dosyalarını okur. | Dumpstate ( DumpstateDevice.cpp ) tarafından çağrıldığında DumpstateBoard() içindeki dumpstate HAL tarafından yapılır. Döküm durumu aracı (Android çerçevesinin bir parçası), DebugFS çağrı sırasında bağlanmasını sağlar. |
Cihaza özel test ve doğrulama | Adb kökü ve kabuğu. DebugFS adb kabuğundan root erişimiyle bağlayın 1 . |
1 DebugFS
root erişimiyle adb shell
bağlamak için şu komutu kullanın:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Gerekli İş Ortağı Eylemleri
İş ortakları, Android 12 cihazlarındaki bu değişikliklere göre aşağıdakileri yürürlüğe koymalıdır:
-
DebugFS
düğümlerinin tüm önyükleme zamanı başlatma işlemlerinin, döküm durumu HAL başlatma işlemi sırasında gerçekleşmesini sağlayın. Bunun nasıl yapılacağına ilişkin bir örnek için bkz . DNM:DebugFS
dosyalarının önyükleme zamanında başlatılması örneği . - Çalışma zamanı sırasında
DebugFS
erişimine izin vermeyin. Aşağıdaki istisnalar geçerlidir:- Hata raporu oluşturma (çöp durumu HAL'den gelir)
- Test etme ve doğrulama (
adb root
veshell
tarafından erişilebilir - önce DebugFS'nin bağlandığından emin olun)
Geliştiriciler, DebugFs
userdebug ve eng yapılarındaki yeniden başlatmalarda takılı kalmasını sağlamak için kalıcı hata ayıklama özelliğini persist.dbg.keep_debugfs_mounted
olarak ayarlayabilir.
GTS uyumluluk testleri, DebugFS
dosya sisteminin kullanıcı yapılarına bağlanmamasını sağlar. Sepolicy neverallow
ifadeleri, Android 12 veya sonraki sürümlerde başlatılan cihazlarda, yetkisiz işlemlere DebugFs
erişim sağlanmamasını sağlar.