Bringing flexible, rapid development to automotive infotainment systems

Juhani Lehtimäki
Snapp Automotive

--

How prooven development processes from mobile development can be utilised in the new automotive domain.

We believe that good software can only be created by iterating quickly, freely testing new ideas, and validating guesses. This comes from the decades of experience our senior management has with software development projects, some of which were successful, some not so much.

Like it or not, we usually guess incorrectly when we try to predict what users will do or would want to do. A waterfall-type approach to software development only validates these guesses once the software is ready, but if some of your fundamental guesses were wrong, you might have a product dead on arrival, which will be costly. In the mobile app industry, we have worked hard to remove all friction from the design and development interaction and to bring validation, using an evidence-based process, into product development. We avoid decisions solely being made by the highest-paid person and drive to implement systems that solve real-world problems in a functional and delightful way.

Rapid iterations, in the real context, in car

It’s all well and good to have newer versions quickly accessible by the developers but to get the real benefit of rapid iterations the team must be able to test and validate their ideas in the real use context, which for automotive systems is in the car.

This is why we put a lot of effort into enabling rapid prototyping and iterations in cars, using approximations of real hardware; Tablets. Read more on how our system runs on a Samsung tablet here.

Going remote

Hiring talent is increasingly difficult. If you try to build an on-site team it further increases the number of challenges. Assuming that the best people to work in your project happen to live within 30 km of your office, or are willing to drop their life and move to a new city, just isn’t realistic. Car software development needs to support effective remote working, just as mobile app development does today.

The ability to run in-development software, on realistic hardware, in-situ, is a big deal; Suddenly developers don’t need permanent access to rack-mounted car hardware all the time, and software can be developed and tested in the field in parallel with prototype and EVT hardware development. When combined with the use of emulators the team can work remotely, scale easily if needed, and only a small team needs to work “hands-on” with the real hardware. The use of rapid development CI/CD and healthy testing practices help to avoid a “big bang” integration which often leads to many unforeseen problems.

We have already applied these practices to automotive development. Currently, on one project, we have engineers and designers working across four different countries. This enabled us to demonstrate an early version of some of our work at the IAA Mobility conference in Munich a fortnight ago without the need for any of the team to physically meet.

With remote-friendly processes, we can engage the best available people for a particular project rather than being limited to those who are, or could be, locally available to us.

Distributing app updates

Most of the work in creating an Android Automotive OS infotainment system involves customising the core apps (Settings, media players, navigation, and home screen, etc.). All the traditional Android app development tools are available to our automotive developers which allows them to maintain development velocity and quality practices learned from years of mobile app development. These tools enable the team to release multiple new app versions daily, and these versions quickly reach other developers, designers, and product managers to see, test, validate and try.

To facilitate this we built a “snApp Store”; a lightweight app update distribution tool that allows updates to be pushed to the devices and systems used during the development phase.

Distributing platform updates

Changes on the OS level, such as those to the system UI, shared components, or configuration, affect all apps running on the system. It is important that these changes propagate to the whole team quickly and without blocking their work.

Emulator

We utilise the built-in update-site emulator image distribution system of Android Studio. For our AAOS emulator images, we use the same emulator refresh and update process that mobile developers are already familiar with. This vastly reduces onboarding times and allows us to have developers tackling real problems in under a day when they start on automotive projects.

Physical devices

We decided early in the project to make use of the wide device support offered by the Lineage project. Their Android distribution includes a firmware updater responsible for updating the entire OS in one go. We use a modified version of it to get updates from our servers and install them on the physical devices we use.

Having a user-friendly firmware update system allows us to distribute changes that can only be made at the OS level to everyone with a device. This means that designers, developers, and stakeholders can all update their own devices without the need to return them to an IT or engineering department, which saves on distribution delays and administrative costs.

The firmware updates can operate over cellular or WiFi networks, which also allows us to understand the experience a user will go through when they have to update their head-unit so we can adapt our designs to make this a smooth and seamless experience.

Snapp Automotive

Snapp Automotive helps companies to work with any version of the Android Automotive OS. It can be Google’s Google Automotive Services (GAS) orientated version, a fully custom one based on the AOSP, or a more lightly customised version based on our existing AAOS work. We help automotive manufacturers to customise the system to fit their particular vehicle and use-cases both visually and functionally. We can bring in components from our library, help integrate 3rd party components or support the company’s internal team building their own from the ground up.

Our parent company, Snapp Mobile, are experts in mobile app development on iOS and Android. Joining forces, we can build or help build great connected experiences beyond the car cockpit in the form of companion apps.

If you’d like to discuss a project, please get in touch.

--

--

Juhani Lehtimäki
Snapp Automotive

Dad | Founder, CTO @snappmobile_io | CEO @snappautomotive | GDE, Android | GDG-Android Munich organiser