Menyiapkan IDE untuk pengembangan SDV

Android Studio untuk Platform (ASfP) adalah lingkungan pengembangan terintegrasi (IDE) yang direkomendasikan untuk pengembangan platform Software-Defined Vehicle (SDV) Android Automotive OS (AAOS). ASfP mendukung semua bahasa yang digunakan platform SDV AAOS, termasuk Rust untuk paket layanan SDV.

Halaman ini hanya membahas penyiapan khusus SDV. Untuk mengetahui informasi selengkapnya tentang fitur dan alur kerja ASfP umum, lihat Android Studio untuk Platform.

ASfP hanya berjalan di Linux 64-bit dengan CPU x86-64. Anda dapat menggunakannya di workstation Linux lokal atau di cloud. Untuk mengetahui informasi selengkapnya tentang penyiapan cloud, lihat Pengembangan cloud.

Menginstal ASfP

ASfP ditetapkan secara default ke ukuran heap maksimum 30 GB. Mengindeks checkout platform menggunakan banyak memori, terutama saat Anda juga menjalankan perangkat Cuttlefish multi-VM di mesin yang sama. Pastikan project Anda terbatas pada direktori yang Anda kerjakan, dan sesuaikan ukuran heap maksimum di setelan memori ASfP jika diperlukan.

ASfP mendukung update otomatis dalam IDE. Untuk mengetahui informasi selengkapnya, lihat Mengupdate Android Studio untuk Platform. Untuk mengetahui informasi selengkapnya tentang cara mendownload dan menginstal ASfP serta memeriksa persyaratan sistem, lihat Menginstal Android Studio for Platform.

Membuat project SDV

Lakukan inisialisasi, sinkronisasi, dan build checkout SDV AAOS Anda sebelum memulai. Untuk mengetahui informasi selengkapnya tentang cara menyiapkan checkout, lihat Lokasi kode dan Mendownload, mem-build, dan menjalankan.

Untuk membuat project SDV, ikuti langkah-langkah berikut:

  1. Buat project baru di ASfP dan pilih root checkout SDV AAOS Anda sebagai checkout repositori. Untuk mengetahui informasi selengkapnya tentang langkah-langkah wizard, lihat Membuat atau mengimpor project.
  2. Setelah ASfP membuat project, pilih ASfP > Project > Open Config untuk membuka file .asfp-project.
  3. Ganti konten file dengan contoh berikut, lalu tetapkan repo ke jalur checkout Anda:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Perbarui lunch dan directories untuk area yang Anda kerjakan. Agar pengindeksan dan sinkronisasi tetap cepat, sertakan hanya direktori yang Anda ubah secara aktif. Tabel berikut mencantumkan target dan direktori SDV umum:

    Fokus pengembangan SDV lunch target directories yang direkomendasikan
    Paket layanan SDV sdv_core_cf-aosp_current-userdebug Katalog layanan dan direktori paket Anda, seperti system/software_defined_vehicle/samples
    Integrasi platform SDV Core sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    Gateway SDV di IVI SDV sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    Keamanan Tampilan di Media SDV sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Display Safety di IVI SDV sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Jika checkout Anda menggunakan manifes trunk_staging, ganti -aosp_current-userdebug dengan -trunk_staging-userdebug. Untuk menjelajahi kode platform native juga, tambahkan cpp ke other_languages. Untuk mengetahui informasi selengkapnya tentang semua opsi konfigurasi, lihat Parameter konfigurasi.

  5. Untuk menerapkan perubahan, pilih ASfP > Sync > Sync Project. Untuk mengetahui informasi selengkapnya tentang mode sinkronisasi (Sinkronisasi Penuh, Sinkronisasi Parsial, dan Sinkronisasi Tanpa Build) serta mengekspor atau mengimpor template .asfp-project yang dapat dibagikan untuk tim Anda, lihat Mode sinkronisasi dan jendela alat Soong dan Template project yang dapat dibagikan (ekspor dan impor).

Men-deploy paket layanan SDV

ASfP menyertakan plugin SDV yang men-deploy APEX yang berisi paket layanan Anda langsung ke perangkat SDV yang sedang berjalan. Plugin ini dinonaktifkan secara default. Untuk menggunakannya, aktifkan plugin SDV di Settings > Plugins. Untuk mengetahui informasi selengkapnya tentang pengemasan APEX, lihat Mem-build dan men-deploy paket layanan.

Cara Anda men-deploy bergantung pada apakah APEX sudah ada di perangkat:

  • Jika APEX sudah diinstal, Anda dapat men-deploy perubahan secara langsung dari ASfP.
  • Jika APEX baru, Anda harus membangun ulang dan meluncurkan kembali image sistem terlebih dahulu, atau menggunakan image sistem yang menyertakan kunci yang digunakan untuk menandatangani APEX. Setelah itu, Anda dapat men-deploy dari ASfP.

Untuk men-deploy APEX paket layanan, ikuti langkah-langkah berikut:

  1. Mulai perangkat SDV Anda dengan plugin Cuttlefish. Untuk mengetahui informasi selengkapnya, lihat Menjalankan perangkat SDV di Cuttlefish.
  2. Buka file apex/Android.bp dari paket layanan Anda, lalu klik ikon Run di gutter di samping blok apex {.
  3. Di menu yang terbuka, pilih Run 'Deploy APEX_NAME'. Anda juga dapat mem-build APEX tanpa men-deploy-nya atau mengubah konfigurasi run dari menu yang sama.

Menjalankan perangkat SDV di Cuttlefish

ASfP menyertakan plugin Cuttlefish yang membuat dan menjalankan perangkat Cuttlefish lokal. Plugin ini memerlukan orchestrator host Cuttlefish. Jika orchestrator host tidak tersedia, ASfP akan menampilkan petunjuk untuk menyiapkannya.

Untuk membuat perangkat SDV, ikuti langkah-langkah berikut:

  1. Pilih Tools > Pengelola Perangkat, klik +, lalu pilih Create Cuttlefish Device.
  2. Untuk membuat penyiapan multi-VM, pilih From canonical configuration dan buat atau impor konfigurasi untuk penyiapan Anda, seperti SDV Core dengan SDV IVI, atau SDV Media dengan SDV IVI untuk Display Safety. Untuk membuat satu VM, pilih From local Android source tree checkout.

Untuk melihat semua tampilan VM di satu layar dan mengakses opsi perangkat tambahan, gunakan jendela alat Cuttlefish. Untuk membukanya, pilih ikon ... di panel samping, lalu pilih Cuttlefish, atau telusuri Cuttlefish di Help > Find Action. Anda juga dapat melihat setiap layar di Running Devices. Karena SDV Core berjalan tanpa layar, gunakan Logcat dan Terminal untuk memeriksanya.

Men-debug dan menguji

ASfP menyertakan debugger LLDB bawaan untuk kode C++ dan Rust. Untuk mengetahui informasi selengkapnya tentang proses debug dan pengujian di ASfP, lihat Men-debug kode platform, Men-debug kode Rust, Menguji kode platform dengan atest, dan Men-debug target cc_test dan rust_test di LLDB.

Saat Anda memasang debugger ke paket layanan, pasang ke proses yang menghostingnya. Nama proses menggunakan format <bundle_name>:<instance_name>, seperti OrchestratorSampleRustServiceBundle:sample-main-no-conditions. Perintah berikut mencantumkan proses yang cocok dan ID prosesnya:

adb shell ps -A | grep <bundle_name>

Untuk mengetahui informasi selengkapnya tentang alur kerja proses debug SDV, seperti menghubungkan ke beberapa perangkat dan melihat log, lihat Men-debug SDV.

Mengedit file VSIDL

ASfP menyertakan Server Bahasa VSIDL (vsidl-lsp). Untuk mengetahui informasi selengkapnya tentang cara menyiapkan katalog untuk server bahasa, lihat Pembaruan katalog otomatis dan integrasi LSP. Jika katalog Anda menyertakan file CATALOG_UPDATE, editor akan menyediakan fitur berikut untuk file .vsidl:

  • Validasi langsung: Editor menandai kata kunci VSIDL dan menampilkan error sintaksis, jenis yang belum terselesaikan, dan error validasi VSIDLC di jendela Problems. Untuk mengetahui informasi selengkapnya tentang aturan validasi dan kode errornya, lihat spesifikasi bahasa VSIDL.
  • Pelengkapan otomatis dan dokumentasi: Anda dapat menekan Ctrl+Spasi untuk saran kata kunci, pesan, layanan, topik, dan saluran, serta menekan Ctrl+Q untuk melihat komentar dokumentasi.
  • Navigasi dan pemformatan: Anda dapat menekan Ctrl+B untuk membuka definisi .vsidl atau .proto, Alt+Shift+F7 untuk menemukan referensi, Ctrl+F12 untuk melihat struktur file, dan Ctrl+Alt+L untuk memformat file.

Menambahkan konteks SDV untuk asisten AI

ASfP menyertakan AI di Android Studio dan agen bawaan dengan alat build dan atest Soong. Untuk mengetahui informasi selengkapnya tentang fitur AI ASfP, lihat Mengenal Android Studio untuk Platform. Untuk membantu asisten AI mengikuti konvensi SDV, tambahkan file AGENTS.md ke root katalog VSIDL Anda. Untuk mengetahui informasi selengkapnya tentang file agen, lihat Menyesuaikan Gemini menggunakan file AGENTS.md.

Contoh berikut adalah titik awal yang dapat Anda sesuaikan dengan katalog Anda:

# 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.