Jobs · Engineering · Utah

Software Engineer, Android Native (C++/NDK)

Red Cat Holdings · Salt Lake City, UT · 3 wk ago
EngineeringFull-time

Position Summary

Teal Drones is seeking an Android Engineer (C++/NDK) to develop and maintain native C++ systems for their drone ground control stations. Responsibilities include building, debugging, and optimizing C++ components for mission planning, telemetry, and real-time vehicle control.

About the Role

This role involves working within the QGroundControl (QGC/Qt) environment, focusing on C++ engineering depth. Key responsibilities include developing and maintaining robust JNI boundaries, debugging native code, and contributing to C++ changes within the QGC/Qt architecture.

Responsibilities

  • Own and maintain native C++ ground control functionality, including feature development, bug fixes, and long-term stability.
  • Build and optimize C++ components using the Android NDK to support real-time mission workflows and vehicle control.
  • Develop and maintain robust JNI boundaries between Android and native layers, with strong ownership of memory, threading, and lifecycle behavior.
  • Debug and resolve issues in multithreaded native code, event loops, and cross-language integration points.
  • Contribute C++ changes within QGC/Qt architecture while maintaining compatibility with upstream QGC.
  • Build, package, and optimize ARM64 Android applications, including APK/AAB generation, signing, and deployment workflows.
  • Debug Android-specific issues such as lifecycle handling, permissions, USB/serial communication, and network instability.
  • Integrate MAVLink communication over multiple transports (UDP, TCP, USB, Serial) on Android devices.
  • Optimize performance for real-time telemetry, video streaming, and map rendering on resource-constrained devices.
  • Ensure compatibility across a range of Android hardware (tablets, rugged devices, and field controllers).
  • Implement logging, diagnostics, and telemetry capture for field debugging.

Qualifications

  • Bachelor’s or master’s degree in Computer Science, Computer Engineering, or a related field.
  • 5+ years of software engineering experience, with strong proficiency in modern C++.
  • Hands-on experience building and debugging native code on Android (NDK, JNI, profiling, debugging).
  • Strong multithreading/concurrency fundamentals and experience with performance-sensitive systems.
  • Experience with networking in mobile or embedded systems (UDP/TCP/serial/USB).
  • Strong debugging skills across multi-layer systems (native code, app layer, networking, OS).
  • Comfortable working in Linux-based development environments.
  • Experience with Qt/QML, QGroundControl, MAVLink, PX4, or ArduPilot is a plus, and can be learned on the job with strong C++ fundamentals.

Similar jobs