Temel kod örnekleri

/system/software_defined_vehicle/samples adresindeki SDV Core Services kod örnekleri, hizmetlerinizi oluşturmaya başlamanızı sağlar. Her örnekte, kullanım alanını açıklayan bir README dosyası bulunur.

Örnek dizine genel bakış

Aşağıdaki tabloda, system/software_defined_vehicle/samples içindeki referans örnek dizinleri ve bunlara karşılık gelen doküman kılavuzları listelenmiştir:

Örnek dizin Açıklama Belge kılavuzu
system/software_defined_vehicle/samples/quickstart Manager ve Monitor paketleri arasında VSIDL yayınlama, abonelik ve RPC'yi gösteren uçtan uca Rust hizmet paketi örneği. Hızlı başlangıç: SDV hizmet paketleri oluşturma ve yürütme
system/software_defined_vehicle/samples/vsidl VSIDL kataloğuna, protobuf tanımlarına ve hizmet paketi uygulama kalıplarına bakın. İş mantığını uygulama
system/software_defined_vehicle/samples/concal Araç yapılandırması ve kalibrasyon parametrelerini okumak ve güncellemek için istemci örneği. Yapılandırma ve kalibrasyon
system/software_defined_vehicle/samples/health Sağlık durumu izlenen hizmet paketi ve hizmet kalitesi (HK) izleme örnekleri. Sağlık durumu izleme
system/software_defined_vehicle/samples/oem_partition_update_client /oem_ab bölüm güncellemelerini tetiklemek ve geri almak için sdv_oem_updater sandığını kullanan örnek hizmet. OEM AB bölümü güncellemeleri
system/software_defined_vehicle/samples/sdv_gateway SDV Gateway üzerinden SDV Core hizmetleriyle iletişim kuran yerel ve Java IVI örnek uygulamaları (NativeSdvGatewayTestApp ve SdvCarMonitorTestApp). IVI'da SDV Gateway'i kullanma
system/software_defined_vehicle/samples/telemetry Cihaz üzerinde telemetri veri kaynağı ve simülatör örnekleri. Veri kaynakları

Logging API'yi kullanma

Sağlanan talimatlar hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Temel günlük örneği

logging.cpp, main, system ve radio arabelleklerine yazma işlemini gösterir. Kullanılabilir günlük arabelleklerinin kısa bir açıklamasını okumak için Alternatif günlük arabelleklerini görüntüleme başlıklı makaleyi inceleyin.

  • Örneği ALOGI_IF gibi koşullu günlükler olmadan çalıştırmak için:

    logging_sdv_sample
    
  • Örneği çalıştırmak ve ALOGI_IF gibi koşullu günlükleri yazdırmak için:

    LOGIF=1 logging_sdv_sample
    

Yapılandırılmış günlük kaydı örneği

Örnek dosya: structured_logging.cpp

  • Günlükleri events günlük arabelleğine yazan örneği çalıştırmak için:

    structured_logging_sdv_sample
    

event, security ve stats günlük arabellekleri, serbest metin yerine yapılandırılmış veriler içerir.

Yapılandırılmış veriler, her zaman INFO önceliği ve sayısal etiket kimliğiyle günlüğe kaydedilen etkinlik listesi API'si kullanılarak günlüğe kaydedilir.

Android.bp. içinde logtags özelliğiyle bir .logtags dosyası tanımlanabilir. Sağlandığında logcat, etiket adını sayısal etiket kimliğinden türetmek için bunu kullanır. Etiket adı daha sonra yapılandırılmış günlükleri filtrelemek için kullanılabilir. Ayrıntılar ve dosya biçiminin açıklaması için logcat event.logtags dosyasındaki yoruma bakın.

Derleme işlemi sırasında tüm logtags dosyaları birleştirilir ve Android sistem görüntüsündeki /system/etc/event-log-tags dosyasına yerleştirilir.

Zaman günlüğü filtreleme örneği derleme

Örnek dosya: compile_time_log_filtering.cpp

Bu örnek, yürütülebilir dosyadan bazı günlükleri kaldırmak için ayarlayabileceğiniz makrolar içerir. Ayrıntılar için kaynak koduna bakın.

Günlük filtreleme örneği: log_filtering.cpp

  • Örneği çalıştırmak ve minimum günlük önceliğini WARN olarak ayarlamak için:

    LOGLEVEL=WARN log_filtering_sdv_sample
    

Günlük filtreleme, sistem özelliklerinden etkilenir. : içeren tüm günlükler için

  • log.tag.<tag>
  • persist.log.tag.<tag>

Sistemdeki tüm günlükler için:

  • log.tag
  • persist.log.tag

Sırayla kontrol edilen seçili günlük düzeyini belirlemek için her değer V, D, I, W veya E olarak ayarlanabilir.

Etkin günlük düzeyi, değeri olan ilk sistem özelliğinde ayarlanan düzeydir. Bu düzey, __android_log_set_minimum_priority çağrısıyla uygulama tarafından ayarlanan günlük düzeyinden daha düşük veya daha yüksek olabilir. Özelliklerin hiçbiri ayarlanmadığında __android_log_set_minimum_priority ile yapılandırılan düzey geçerli olur.

Ayrıntılar için Günlük kaydı sistemine genel bakış başlıklı makaleyi inceleyin.

  • Varsayılan günlük etiketini example_tag olarak ayarlayarak örneği çalıştırın:

    LOGTAG=example_tag log_filtering_sdv_sample
    

Örnekte, tüm günlük mesajları için günlük etiketini ayarlamak üzere kullanabileceğiniz, açıklama satırı yapılmış bir LOG_TAG makro tanımı da bulunur. Bu şekilde ayarlanan etiket, çalışma zamanında __android_log_set_default_tag ile ayarlanan etiketi geçersiz kılar.

LOG_TAG makrosu tanımlanmamışsa ve uygulama __android_log_set_default_tag yöntemini çağırmıyorsa varsayılan etiket, getprogname() yönteminin sonucudur. Örneğin, yürütülebilir dosya adı.