Android 11, IDumpstateDevice (sürüm 1.1) adlı yeni bir HAL ekler. Bu HAL, standart hata raporlarına dahil edilen satıcı günlüklerinin kapsamını daha sıkı bir şekilde belirlemek için yeni yöntemler sunar. Ayrıca, kullanıcı derlemelerinin satıcı günlüğünü açıp kapatmasına (kullanıcı derlemeleri için varsayılan olarak kapalıdır) olanak tanır. Bu sayede OEM'ler, belirli hata raporlarına nelerin dahil edileceği konusunda daha fazla kontrol sahibi olur.
Bu özellik, isteğe bağlı bu HAL'yi uygulamayı tercih eden OEM'leri etkiler. OEM'in bu HAL ile neyi kullanıma sunmayı seçtiğine bağlı olarak SoC'ler etkilenebilir. Operatörlerin etkilenmesi beklenmemektedir.
Hata raporlarına hangi bilgileri ekleyeceğiniz, hata ayıklama için hangi bilgilerin alakalı olduğuna bağlıdır ancak genellikle daha ayrıntılı bilgiler daha iyidir.
Örnekler ve kaynak
IDumpstateDevice'ın (kullanımdan kaldırılan) 1.0 sürümünün varsayılan bir uygulaması vardır. Bu uygulamada, dumpstate yardımcı program kitaplığının kullanımına ilişkin bir örnek gösterilir:
frameworks/native/cmds/dumpstate/DumpstateUtil.h
. 1.1 HAL'nin Cuttlefish uygulaması da vardır:
device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
.
Kaynak kodu burada bulunur:
- HAL dosyaları
hardware/interfaces/dumpstate/1.1/
altında yer alır. - Hata raporu içeriklerini kontrol eden dumpstate yerel kodu
frameworks/native/cmds/dumpstate/
altındadır.
Uygulama
Bu HAL'yi uygulamak için android.hardware.dumpstate@1.1::IDumpstateDevice
HAL arayüzünü uygulayın. Birçok olası DumpstateMode
değeri vardır ancak bunların tümü tek bir cihaz tarafından desteklenmeyebilir (ör. Wear OS olmayan cihazlar için WEAR).
dumpstate HAL'yi uygulamak isteğe bağlıdır. Android 11 ile kullanıma sunulan tüm yeni cihazlar, Dumpstate HAL'ı uyguluyorlarsa IDumpstateDevice 1.1'i uygulamalıdır. Android 11'den önce IDumpstateDevice 1.0'ı uygulamış olan cihazların 1.1'e yükseltilmesi nispeten kolaydır ve bunu yapmanız önemle tavsiye edilir. Çünkü bu işlem, hata raporlarına dahil edilen gereksiz özel bilgilerin miktarını büyük ölçüde azaltır.
Bu özellik, Android 11'de de bulunan ve frameworks/native/cmds/dumpstate
altında yer alan temel dumpstate değişikliklerine bağlıdır.
Bu HAL'nin uygulanması, her şeyin tam olarak çalışması için belirli sistem özelliklerinde, dosyalarda vb. bazı SEPolicy değişiklikleri yapılmasını gerektirebilir ve tüm ilgili bilgilerin hata raporlarına dökülmesi için tedarikçilerle koordinasyon sağlanması gerekir.
Özelleştirme
Cihaz kullanıcısı, geliştirici ayarlarını kullanarak satıcı günlüğünü etkinleştirebilir veya devre dışı bırakabilir.
Bu ayar devre dışı bırakıldığında dumpstateBoard_1_1
, OEM tarafından belirlenen minimum düzeyde temel bilgileri yine de verebilir. Satıcı günlüğünü devre dışı bırakmak, hata raporuna yalnızca temel bilgilerin eklenmesini sağlar. Etkinleştirmek ise OEM'in seçtiği tüm bilgileri ekler.IDumpstateDevice::dumpstateBoard
dumpstate.cpp
(IDumpstateDevice HAL yöntemlerini çağıran) öğesini, örneğin dumpstateBoard
için verilen zaman aşımını artırmak üzere değiştirebilirsiniz.
Ancak dumpstate.cpp
öğesinin temel mantığı değişmemelidir.
Zaman aşımları herhangi bir değer olabilir ancak hata raporunun tamamlanması için gereken süreyi önemli ölçüde artırmamalıdır. Özellikle,
DumpstateMode::CONNECTIVITY
zaman açısından çok hassastır ve tüm alakalı modem/kablosuz/ağ günlüklerini toplamak için mümkün olduğunca hızlı çalışması gerekir.
Doğrulama
IDumpstateDevice uygulaması için bir VTS testi ve genel BugreportManager
işlevselliği için işlevsel birim testleri vardır.
Önerilen manuel test senaryosu:
frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
.