SDV geliştirme için IDE ayarlama

Platform için Android Studio (ASfP), Android Automotive OS (AAOS) yazılımla tanımlanmış araç (SDV) platformu geliştirmesi için önerilen entegre geliştirme ortamıdır (IDE). ASfP, SDV hizmet paketleri için Rust dahil olmak üzere AAOS SDV platformunun kullandığı tüm dilleri destekler.

Bu sayfada yalnızca SDV'ye özgü kurulum ele alınmaktadır. Genel ASfP özellikleri ve iş akışları hakkında daha fazla bilgi için Android Studio for Platform sayfasına bakın.

ASfP yalnızca x86-64 CPU'lu 64 bit Linux'ta çalışır. Bu aracı yerel bir Linux iş istasyonunda veya bulutta kullanabilirsiniz. Bulut kurulumu hakkında daha fazla bilgi için Bulut geliştirme başlıklı makaleyi inceleyin.

ASfP'yi yükleme

ASfP'yi indirme ve yükleme ile sistem gereksinimlerini kontrol etme hakkında daha fazla bilgi için Android Studio for Platform'u yükleme başlıklı makaleyi inceleyin.

Platform ödeme sayfasının dizine eklenmesi çok fazla bellek kullanır. Özellikle aynı makinede birden fazla sanal makine içeren Cuttlefish cihazları çalıştırıyorsanız bu durum daha da belirginleşir. ASfP yavaş çalışıyorsa ASfP bellek ayarlarında maksimum yığın boyutunu projenize ve makinenize uyacak şekilde artırın ve projenizin kapsamını üzerinde çalıştığınız dizinlerle sınırlayın.

SDV projesi oluşturma

Başlamadan önce AAOS SDV ödeme işleminizi başlatın, senkronize edin ve oluşturun. Ödeme sürecinizi ayarlama hakkında daha fazla bilgi için Kod konumu ve İndirme, oluşturma ve çalıştırma başlıklı makaleleri inceleyin.

SDV projesi oluşturmak için aşağıdaki adımları uygulayın:

  1. ASfP'de yeni bir proje oluşturun ve AAOS SDV ödemenizin kökünü depo ödemesi olarak seçin. Sihirbaz adımları hakkında daha fazla bilgi için Proje oluşturma veya içe aktarma başlıklı makaleyi inceleyin.
  2. ASfP projeyi oluşturduktan sonra ASfP > Proje > Yapılandırmayı Aç'ı seçerek .asfp-project dosyasını açın.
  3. Dosyanın içeriğini aşağıdaki örnekle değiştirin ve ardından repo kısmını ödeme sayfanızın yoluyla değiştirin:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Çalıştığınız alan için lunch ve directories değerlerini güncelleyin. Dizin oluşturma ve senkronizasyonun hızlı olması için yalnızca etkin olarak değiştirdiğiniz dizinleri ekleyin. Aşağıdaki tabloda, yaygın SDV hedefleri ve dizinleri listelenmiştir:

    SDV geliştirme odağı lunch hedef Önerilenler directories
    SDV hizmet paketleri sdv_core_cf-aosp_current-userdebug Hizmet kataloğunuz ve paket dizininiz (ör. system/software_defined_vehicle/samples)
    SDV Core platform entegrasyonu sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    SDV IVI'de SDV Gateway sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    SDV Medya'da Görüntülü Reklam Güvenliği sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    SDV IVI'de Display Safety sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Ödeme sürecinizde trunk_staging manifesti kullanılıyorsa -aosp_current-userdebug yerine -trunk_staging-userdebug yazın. Yerel platform koduna da göz atmak için cpp simgesini other_languages simgesine ekleyin. Tüm yapılandırma seçenekleri hakkında daha fazla bilgi için Yapılandırma parametreleri başlıklı makaleyi inceleyin.

  5. Değişikliklerinizi uygulamak için Dosya > Projeyi Senkronize Et'i seçin.

SDV hizmet paketlerini dağıtma

ASfP, hizmet paketlerinizi doğrudan çalışan bir SDV cihazına dağıtan bir APEX'i dağıtan bir SDV eklentisi içerir. Eklenti varsayılan olarak devre dışıdır. Bu özelliği kullanmak için Ayarlar > Eklentiler'de SDV eklentisini etkinleştirin. APEX paketleme hakkında daha fazla bilgi için Hizmet paketleri oluşturma ve dağıtma başlıklı makaleyi inceleyin.

Dağıtım şekliniz, APEX'in cihazda yüklü olup olmadığına bağlıdır:

  • APEX zaten yüklüyse değişikliklerinizi doğrudan ASfP'den dağıtabilirsiniz.
  • APEX yeni ise önce sistem görüntüsünü yeniden oluşturup yeniden başlatmanız veya APEX'i imzalamak için kullanılan anahtarı içeren bir sistem görüntüsü kullanmanız gerekir. Ardından, ASfP'den dağıtım yapabilirsiniz.

Bir hizmet paketi APEX'i dağıtmak için aşağıdaki adımları uygulayın:

  1. Cuttlefish eklentisiyle SDV cihazınızı başlatın. Daha fazla bilgi için Cuttlefish'te SDV cihazlarını çalıştırma başlıklı makaleyi inceleyin.
  2. Hizmet paketinize ait apex/Android.bp dosyasını açın ve apex { bloğunun yanındaki olukta Run (Çalıştır) simgesini tıklayın.
  3. Açılan menüde "Deploy APEX_NAME"u çalıştır'ı seçin. APEX'i dağıtmadan da oluşturabilir veya aynı menüden çalıştırma yapılandırmasını değiştirebilirsiniz.

Cuttlefish'te SDV cihazlarını çalıştırma

ASfP, yerel Cuttlefish cihazları oluşturan ve çalıştıran bir Cuttlefish eklentisi içerir. Eklenti için Cuttlefish ana makine düzenleyicisi gerekir. Ana makine düzenleyicisi kullanılamıyorsa ASfP, kurulum talimatlarını gösterir.

SDV cihazı oluşturmak için aşağıdaki adımları uygulayın:

  1. Araçlar > Cihaz Yönetim Paneli'ni seçin, + işaretini tıklayın ve Cuttlefish Cihazı Oluştur'u seçin.
  2. Çoklu VM kurulumu oluşturmak için Standart yapılandırmadan'ı seçin ve kurulumunuz için bir yapılandırma oluşturun veya içe aktarın (ör. SDV IVI ile SDV Core ya da Display Safety için SDV IVI ile SDV Media). Tek bir VM oluşturmak için bunun yerine Yerel Android kaynak ağacı ödemesinden'i seçin.

Tüm sanal makine ekranlarını tek bir ekranda görüntülemek ve ek cihaz seçeneklerine erişmek için Cuttlefish araç penceresini kullanın. Açmak için yan panelde ... simgesini ve Cuttlefish'i seçin veya Cuttlefish'i Yardım > İşlem Bul'da arayın. Ayrıca, Çalışan Cihazlar'da tek tek ekranları da görüntüleyebilirsiniz. SDV Core, ekran olmadan çalıştığı için incelemek üzere Logcat ve Terminal'i kullanın.

Hata ayıklama ve test etme

ASfP'de hata ayıklama ve test etme hakkında daha fazla bilgi için Platform kodunda hata ayıklama ve Platform kodunu test etme başlıklı makaleleri inceleyin. Rust hizmet paketlerinde hata ayıklamak için CodeLLDB'yi ayarlama hakkında daha fazla bilgi edinmek istiyorsanız Rust'ta hata ayıklama başlıklı makaleyi inceleyin.

Hata ayıklayıcıyı bir hizmet paketine eklediğinizde, paketi barındıran işleme ekleyin. İşlem adları, <bundle_name>:<instance_name> biçimini kullanır (ör. OrchestratorSampleRustServiceBundle:sample-main-no-conditions). Aşağıdaki komut, eşleşen işlemleri ve işlem kimliklerini listeler:

adb shell ps -A | grep <bundle_name>

Birden fazla cihaza bağlanma ve günlükleri görüntüleme gibi SDV hata ayıklama iş akışları hakkında daha fazla bilgi için SDV'de hata ayıklama başlıklı makaleyi inceleyin.

VSIDL dosyalarını düzenleme

ASfP, VSIDL Language Server'ı (vsidl-lsp) içerir. Kataloğunuzu Language Server için ayarlama hakkında daha fazla bilgi edinmek istiyorsanız Otomatik katalog güncellemeleri ve LSP entegrasyonu başlıklı makaleyi inceleyin. Kataloğunuzda CATALOG_UPDATE dosyası varsa düzenleyici, .vsidl dosyaları için aşağıdaki özellikleri sağlar:

  • Canlı doğrulama: Düzenleyici, VSIDL anahtar kelimelerini vurgular ve Sorunlar penceresinde söz dizimi hatalarını, çözümlenmemiş türleri ve VSIDLC doğrulama hatalarını gösterir. Doğrulama kuralları ve hata kodları hakkında daha fazla bilgi için VSIDL dil spesifikasyonuna bakın.
  • Otomatik tamamlama ve dokümanlar: Anahtar kelime, mesaj, hizmet, konu ve kanal önerileri için Ctrl+Boşluk tuşlarına, doküman yorumlarını görüntülemek için ise Ctrl+Q tuşlarına basabilirsiniz.
  • Gezinme ve biçimlendirme: .vsidl veya .proto tanımlarına gitmek için Ctrl+B, referansları bulmak için Alt+Üst Karakter+F7, dosya yapısını görüntülemek için Ctrl+F12 ve dosyayı biçimlendirmek için Ctrl+Alt+L tuşlarına basabilirsiniz.

Yapay zeka asistanları için SDV bağlamı ekleme

ASfP, Android Studio'da Gemini'ı içerir. ASfP özellikleri hakkında daha fazla bilgi için Meet Android Studio for Platform başlıklı makaleyi inceleyin. Gemini'ın veya başka bir yapay zeka kodlama asistanının SDV kurallarına uymasına yardımcı olmak için SDV kataloğunuzun kök dizinine bir AGENTS.md dosyası ekleyin. Temsilci dosyaları hakkında daha fazla bilgi için AGENTS.md dosyalarını kullanarak Gemini'ı özelleştirme başlıklı makaleyi inceleyin.

Aşağıdaki örnek, kataloğunuza uyarlayabileceğiniz bir başlangıç noktasıdır:

# AAOS SDV service catalog rules

- Implement SDV service bundles in Rust under `services/<BundleName>/src/`.
- Keep `.proto` files limited to Protobuf `message`, `enum`, and `service` definitions. Define service bundles, APEX packaging, VM placement, and SOME/IP mappings in `.vsidl` files.
- Regenerate middleware with `vsidlc` after you change `.vsidl` or `.proto` files, and leave generated files unmodified.
- Use `PascalCase` for service bundle names and lowercase `kebab-case` for topic and channel names.
- Run `vsidlc --explain <CODE>` to look up a VSIDLC error code.