Çeşitli bileşenleri dağıtıp yapılandırarak ölçeklenebilir hizmet odaklı ara yazılımı IP üzerinden (SOME/IP) yazılımla tanımlanmış araçla (SDV) entegre edin. Her aracı örneği için karşılık gelen bir yerel yığın uygulaması gerekir. Bu belgede aşağıdakilerin nasıl yapılacağı açıklanmaktadır:
- Tek aracı dağıtımı yapılandırma
- SOME/IP aracısını tek veya birden fazla örnek olarak dağıtın
- Araç hizmetleri etkileşimli veri dili (VSIDL) aracısını dağıtma
- Soong'u
vsidl_rc_generatorile kullanma
Örnek yapılandırma
Cuttlefish sanal Android cihazları
sdv_core_cf ve donanım sdv_core_arm64 gibi SDV örnekleri, esnek bir dağıtım şeması gösterir. Aracı ve yığın, önyükleme süresi sistem özelliğine göre başlatılır.
ro.boot.sdv.someip.enable.
Sistemde çalışan SDV örneklerinden yalnızca birinde androidboot.sdv.someip.enable=true ayarını yaparak tek bir aracı dağıtım şeması elde edebilirsiniz.
# device/google/sdv/sdv_core_base/sdv.agents.rc
# Declare and start the SDV SOME/IP broker agent.
service sdv_someip_broker_agent /system_ext/bin/sdv_someip_broker_agent_comms
class core
disabled
user system_ext_sdv_someip
group system
on property:ro.sdv.orchestrator.state.ready=true && property:ro.boot.sdv.someip.enable=true
start sdv_someip_broker_agent
Başka bir örnek:
#device/google/sdv/sdv_core_cf/init.sdv_core_cf.rc
# Declare and start the sample SDV SOME/IP stack agent.
service sdv_someip_stack_agent /vendor/bin/sdv_someip_stack_agent
class core
disabled
user system
group system
setenv VSOMEIP_CONFIGURATION /vendor/etc/someip/vsomeip_config.json
setenv VSOMEIP_BASE_PATH /data/vendor/vsomeip/
on property:dev.bootcomplete=1 && property:ro.boot.sdv.someip.enable=true
start sdv_someip_stack_agent
Aracı dağıtımı
SOME/IP aracısını SDV'de tek veya birden fazla örnek olarak dağıtabilirsiniz. SOME/IP alanlarını (veya alt ağları) farklı bağımsız örneklere bölebilirsiniz. Yükü dengelemek veya güvenlik amacıyla izolasyonu iyileştirmek için bunu yapabilirsiniz.
Her örnek, SOME/IP ve SDV uç noktalarının ayrık bir kümesini işlemelidir. Özel yönlendirme veya temsilciler arası senkronizasyon kullanamazsınız. Yanlış yapılandırma, yayınların yinelenmesine veya tutarsız hizmet keşfi sonuçlarına yol açabilir.
Araç hizmetleri etkileşimli veri dili sağlayıcısı
SOME/IP, çeviriler için gereken meta verileri VSIDL aracısından alır. VSIDL aracısını SOME/IP aracısı ile aynı sanal makineye dağıtmanız gerekir.
runtime-config-prebuilts varyant seçeneğiyle kullanıldığında VSIDL aracısı, Android.bp dosyası oluşturabilir. Bu dosya, ilgili çalışma zamanı yapılandırmasını oluşturan ve dağıtan önceden oluşturulmuş kurallar içerir.
Soong
SDV tarafından sağlanan vsidl_rc_generator'yı çalıştırmak için:
vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>
Şu bağımsız değişkenleri sağlamanız gerekir:
--vsidl-path <VSIDL_PATH>--catalog-path <CATALOG_PATH>--output-path <OUTPUT_PATH>
Aşağıdaki isteğe bağlı bağımsız değişkenleri de sağlayabilirsiniz:
İsteğe bağlı:
--dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...Bağımlı proto'ların
catalog_pathdışındaki dizinlerini belirtir. Bağımlı proto'lar için Rust API'yi oluşturmak üzere her dizin birAndroid.bpdosyası içermelidir. Bu dosya birrust_protobufderleme hedefi içermelidir.İsteğe bağlı:
--variant <VARIANT>Varsayılan olarak
RuntimeConfigdeğerini alır ve çalışma zamanı yapılandırma oluşturucunun çalışması gereken modu belirtir.RuntimeConfig, SOME/IP ve teşhis için çalışma zamanı yapılandırma dosyaları oluşturur.RuntimeConfigPrebuilts, derleme dosyaları oluşturur. Bu dosyalar, önceden oluşturulmuş modüller içerir. Bu modülleri kullanarakRuntimeConfigvaryantı tarafından oluşturulan dosyaları diğer modüllere veya VM görüntüsüne ekleyebilirsiniz.İsteğe bağlı:
--service-bundle-name <SERVICE_BUNDLE_NAME>Çalışma zamanı yapılandırma oluşturucunun uygulanacağı hizmet paketini belirtmek için kullanılan bağımsız değişken.
İsteğe bağlı:
--package-name <PACKAGE_NAME>Bu bağımsız değişkeni, hizmet paketi adı bağımsız değişkenine ek olarak, çalışma zamanı yapılandırma oluşturucunun uygulanacağı hizmet paketi paket adını belirtmek için kullanın.
İsteğe bağlı:
--filegroup <FILEGROUP>RuntimeConfigPrebuiltsmodu kullanılırken tanımlanmalıdır.