About the opportunity
Flock is looking to add an Android Framework Engineer to our device software team. Our device team is made up of scrappy engineers who are responsible for all of the code running on a variety of devices Flock deploys in the real world. They enable the whole experience by writing applications that reliably capture, process, and upload over 200M images per day for years at a time without needing human interaction to keep them running.
Some challenges you’ll tackle
- Integrate and customize Android frameworks to Flock Safety’s custom hardware platforms
- Work with the kernel team and device software teams to enable required functionality in Android-based devices (e.g. cameras, environmental sensors, power systems, etc.)
- Optimize Android system services and frameworks to run in a headless environment
- Develop, review, test, and debug Android APIs and system services
- Ensure the stability and robustness of the system software from ideation through production and launch
- Work with systems designed for ultimate redundancy and high availability
- Balance performance with energy consumption - we’re a machine learning enabled media processing machine powered by the sun!
- Integrate Android with other IoT devices to share data to help each other understand and respond to the environment
About You
- Strong desire to understand the root cause of a problem and deliver a robust solution.
- Development experience with embedded systems, especially headless and/or industrial/non-consumer devices
- Experience bringing up devices and customizing BSPs for Android other embedded build systems such as Yocto or Buildroot
- Experience developing for non-phone/tablet/watch Android Devices (preferred)
- Strong knowledge of and experience with AOSP architecture and comprising projects
- Extensive experience coding in C/C++ and Java, specific experience with Android Frameworks and System Java preferred
- Extensive knowledge of Android fundamentals (ART, RIL, AIDL, Broadcast, Binder, Messenger, SystemServer, etc.). Specific experience with the Java/Frameworks side of these interfaces preferred
- Experience in dealing with complex systems and codebases (AOSP, Android Makefile, Soong, HALs, etc)
- Familiarity with Linux internals (process scheduler, memory management, concurrency, synchronization, memory allocation, file system, networking, storage, subsystem architecture)
- Familiarity with Android system software, Android HALs and Driver Architecture
- Experience working in a Linux development environment with GNU toolchain and standard project management tools (Git, Github, Gerrit, etc.)
- Some knowledge of common peripheral bus technologies including SPI, I2C, UART with focus on how Android interacts with these types of peripherals