The cost of developing and maintaining an operating system for a device is challenging. Depending on the number of devices one sells and the size of the team, it can easily become financially unfeasible. That leads some companies to look to Android hoping for cost reduction and ease of development. However, this is not a bed of roses.
Apart from the phones and tablets industry, many IoT/Edge companies have decided to use Android on their devices —think vending machines, agricultural navigation, access control, and so on. Because of Android’s popularity, everyone is accustomed to how it looks, configures, and how to interact with this operating system. But most embedded devices don't need all the extras it provides. Device makers aren’t looking for most of the features and fixes that come with new Android releases. Looking at the latest Android releases, we can find features like:
- Screen recorder (Android 11)
- Better support for biometric authentication in apps. (Android 10)
- Redesigned volume slider (Android 9)
Those features simply don't apply to the majority of embedded products.
When choosing Android, one may get the feeling that they're getting a full-stack operating system: this is true for phones and tablets, not for IoT. The complexity and frequency of new features developed for mobile consumer devices means IoT development becomes that much more difficult to maintain and keep up-to-date and secure.
When chip vendors demonstrate Android on their devices, look at what Android version they’re using and how often they maintain this operating system. You’ll likely find it is just a proof-of-concept, and by choosing it, you are left "walking by yourself" for the lifetime of the device.
But not everything is bad: graphics and UI on Android look gorgeous, UI development is easier than most of the graphic solutions for Embedded Linux, and finding experts on Android App development instead of C++ (QT or Crank) is much simpler.
You might be working in a company that made this decision some time ago, with products based on Android. Maybe you’re about to decide what operating system to use on the next product generation. In short, Android is best for smartphones and tablets where product obsolescence is a given and the ability to maintain the technical debt and long-term security is not as important. But if Android was designed for embedded devices, they would never have created Android Things back in 2015, an Android-based embedded operating system for low-memory devices. It also proved not to be successful, with Android Things shutting down in 2020.
If you still want to design a product based on Android because you are looking for nice interfaces, be careful! Big companies use Android for their smartphones, where the cost of development and maintenance makes sense given the number of phones and tablets they sell, and the services and ecosystems around mobile that Android leverages. However, device makers with limited financial and engineering resources will feel a bit trapped upon launching their Android based IoT product; Android is a heavy weight system and you’ll need a large, specialized team just to build and maintain the Android operating system. Don’t forget IoT and Edge devices don't even benefit from the full Android Stack you’ll be left supporting.
Android can be free and open-source, but Google makes money with Play Store, search, and maps. No one apart from your team cares about helping you make it work on your product; it is not a phone or tablet. The cost of development and maintenance is entirely yours —based on how many devices you have in the field, this might not be worth the investment. While Android does provide the API to facilitate device management and over-the-air updates, the implementation is yours to develop.
So If the reason you were looking at Android is for the responsive user interface, there are other great options available today like Flutter, Crank and QT. Reconsider the operating system for something lighter and easier to use, like Embedded Linux.
Security updates might be the reason why you are looking at Android. New laws are being discussed and implemented around cybersecurity requirements throughout a product’s lifecycle. Phones and tablets will likely be the first forced into a better and longer cybersecurity commitment. However, is the same good enough for IoT and Edge devices? Could your company do better by being prepared with a stronger update method, one covering your products entire life cycle?
Keep it Simple
Embedded Linux is not easy, but easier than Android. If you look closely, some Embedded Linux weaknesses when developing a device are the same as when developing with Android. On both OSs, a reliable over-the-air update capability, security, and OS customization can be quite tricky.
FoundriesFactory and the Linux microPlatform solve the majority of the Embedded Linux development challenges. The Linux microPlatform is an optimized distribution for embedded systems developed with the best practices on security. The Linux microPlatform together with a FoundriesFactory subscription gives you the ability to secure over-the-air updates and manage your devices. Foundries.io maintains the Linux microPlatform over your product lifecycle dramatically reducing the maintenance workload for your team.
That combined with Flutter can be the perfect match between a simple OS solution and a responsive and lovely user interface for your product.
Giving you a little spoiler: I wrote a blog (publishing soon) on how to create a Factory with our 30 day free trial, customize the Linux microPlatform to add Flutter and from there start to manage and over-the-air update the devices. By the end, you will be able to run on your Raspberry Pi 4 or an iMX8MM-EVK a Flutter demo shown in the video below.