HACKER Q&A
📣 daredevil_kohai

Resources for Android HAL, Framework, Platform Development in Automotive


Basically the title. I work in an IT company as an android application developer for automotive infotainment systems. So far my work has been in limited to android coding for making HMI interface and the android service layer related to the apps. I have some expertise in IPC communication implementation using AIDL, between the apps inside the custom automotive OS we develop. I want to have a good understanding of android native frameworks and services and android HAL layer. Also would like to have some exposure to concepts of JNI and to have experience in interfacing JAVA and native layer modules through JNI. If anyone knows good resources to start at these things in light of automotive domain, please share it with me. If you can guide me in the right direction, advices are also helpful to someone who is aspired to have a career in this automotive platform development. I would like to switch for a job where these skills are required, but my android application development knowledge is not enough to crack any of those interviews that seek knowledge and experience in automotive platform development. Thanks in Advance!


  👤 _448 Accepted Answer ✓
I worked on something like this long time ago. It was not related to automotive but mobile industry. At that time it was difficult to get any such information. I don't know whether things have changed now, but I will give you my approach to understanding the low-level android stack. I approached it from bottom-up level rather than top-down. I looked at the hardware driver(I was working on enabling graphics stack for the devices, so I started digging into the graphics driver and its related userland libraries). Then I looked at the HAL layer that was related to the graphics stack. Then went through the skia library and the surface flinger, then the corresponding JNI calls. Most of the time you don't have to touch the JNI part of the stack.

For JNI please refer the documentation on Oracle's website.

For everything below that, the best approach is to just dive into the AOSP code(https://source.android.com). There is lots of documentation there as well. But the source code still gives you a lot better insight into the workings of the system and what the top layer expects from the bottom layer. As they say, "Read the source Luke!" :)