Yazılımla tanımlanan araç (SDV) platformu, kod tabanında çok sayıda VSIDL kataloğu içerir. CATALOG_UPDATE dosyası, her katalog için merkezi bir yapılandırma sağlayarak hem otomatik güncellemeleri hem de IDE entegrasyonunu mümkün kılar.
CATALOG_UPDATE dosyasının rolü
CATALOG_UPDATE dosyası iki temel amaca hizmet eder:
- Otomatik güncellemeler: Dosya, derleyici veya bağımlılıklar değiştiğinde
regeneratoraracının sistemdeki tüm katalogları bulup yeniden derlemesine olanak tanır. - Language Server Protocol (LSP) Desteği: VSIDL Language Server, katalog kökünü bulmak ve bağımlılıkları çözmek için bu dosyayı kullanır. Bu, diğer kataloglarda tanımlanan türler için "Tanıma Git", otomatik tamamlama ve anında doğrulama gibi özellikleri etkinleştirir.
Katalog yapılandırma
VSIDL kataloğu için otomatik güncellemeleri ve LSP desteğini etkinleştirmek üzere kataloğun kök dizininde bir CATALOG_UPDATE dosyası oluşturun. Bu dosya bir metin protobuf dosyasıdır.
Katalog yapılandırma alanları
output_path(dize, isteğe bağlı): Oluşturulan ara katman yazılımı kodunun yerleştirilmesi gereken dizine giden, katalog kökünden itibaren olan göreli yol.dependency_catalog_paths(tekrarlanan dize): Diğer katalog dizinlerine giden göreli yolların listesi. LSP sunucusu, harici türleri çözümlemek için bu yolları kullanır.vsidlc_gen_args(dize, isteğe bağlı):vsidlc'ye iletilen bağımsız değişkenler. LSP sunucusu, doğru doğrulama kurallarını uygulamak için bunları inceler (örneğin,"--apex").prebuilts_output_path(string, isteğe bağlı): Oluşturulan çalışma zamanı yapılandırması önceden oluşturulmuş dosyalarının yolu.prebuilts_filegroup(string, isteğe bağlı): Önceden oluşturulmuş öğeler için Soongfilegroupadı.
Örnek yapılandırma
# proto-file: //system/software_defined_vehicle/tools/regenerator/proto/catalog.proto
# proto-message: Catalog
output_path: ".."
dependency_catalog_paths: "../../../../../automotive_services/diagnostics/vsidl/v1"
vsidlc_gen_args: "--apex"
Otomatik güncellemeler neden gereklidir?
Oluşturulan kodu her katalog için manuel olarak korumak çeşitli nedenlerden dolayı sorunludur:
- Derleyici güncellemeleri: Derleyici, hata düzeltmeleri veya yeni özelliklerle güncellendiğinde, tutarlılığı korumak için
Android.bpdosyasındakigenruleile kapsanmayan tüm oluşturulan kod ve dosyaların yenilenmesi gerekir. - Bağımlılık yönetimi: Temel katalogdaki değişiklikler genellikle alt katalogların yeniden oluşturulmasını gerektirir.
- Doğruluk: Otomatik güncellemeler, yollar ve bağımlılıklar belirtilirken insan kaynaklı hata riskini azaltır.
Yeniden oluşturma aracını çalıştırma
regenerator aracı, SDV kökünden başlayarak dizin ağacında ilerler ve tam olarak CATALOG_UPDATE adlı dosyaları arar.
Yapılandırılmış tüm katalogları güncellemek için:
Aracı oluşturun:
m regeneratorAracı çalıştırın:
regeneratorİsteğe bağlı olarak, belirli bir dizin için yinelemeli olarak uygulayın:
console regenerator --root /path/to/directory
Araç, oluşturulan dosyaları günceller ve değişikliklerin sistemin geri kalanıyla uyumlu olduğunu doğrulamak için tam derleme (m droid) gerçekleştirir.