Sr. Software Engineer, Android Applications, Autonomy

Rivian Rivian · Auto · Palo Alto, CA · Autonomous Driving

Senior Software Engineer to lead the development of mission-critical diagnostic and data collection applications for the Rivian Central Information Display (CID). This role involves bridging high-level Android application development with low-level vehicle systems, building tools for data logging, visualization of vehicle health, system integrity, and real-time diagnostic streams. The application will interact with Android Automotive OS (AAOS) and the autonomous driving compute platform, facilitating data collection workflows for autonomy engineers and test drivers.

What you'd actually do

  1. Design and implement robust Android applications using Kotlin specifically tailored for the Rivian CID environment.
  2. Build efficient pipelines to consume, parse, and visualize high-frequency vehicle data from the Vehicle Network (CAN, Ethernet) via the Android VHAL (Vehicle Hardware Abstraction Layer).
  3. Work closely with the Autonomy and Infotainment teams to define new communication pathways required for deep vehicle data access.
  4. Use Android Profiler, systrace, and perfetto to identify bottlenecks in the app's rendering and data processing layers.
  5. Drive best practices for Android development within the team, owning the functionality and quality of the data recording application.

Skills

Required

  • Kotlin
  • Coroutines
  • Android SDK
  • Android Internals (Services, Content Providers, IPC/Binder)
  • Modern UI development
  • Binary data formats (Protobuf, FlatBuffers)
  • Networking protocols (TCP/UDP, MQTT)
  • adb shell scripting
  • Python

Nice to have

  • Automotive Experience
  • Vehicle communication protocols (CAN, LIN, Automotive Ethernet)
  • Android Automotive OS stack
  • Car Service and VHAL
  • Android NDK/C++
  • Android Graphics (Canvas, OpenGL ES, or Vulkan)

What the JD emphasized

  • Expert-level knowledge of Kotlin, Coroutines, and the Android SDK.
  • Deep understanding of Android Internals (Services, Content Providers, IPC/Binder).
  • Experience dealing with binary data formats (Protobuf, FlatBuffers) and an understanding of networking protocols (TCP/UDP, MQTT).
  • A track record of building "crash-proof" applications that handle edge cases and long-running sessions.