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.