Working With an Android Porting Company or ODM
In this article, we discuss some requirements of working with an Android porting vendor, or ODM. Source code and maintenance are important considerations in that selection process. SDG Systems offers open, full-featured Android porting services.
Working with an ODM (Original Design Manufacturer) or 3rd Party in the implementation of your Android device or hardware project is a necessity for all but the largest companies. For simplicity in this article, I will refer to this 3rd party Android porting company or ODM generically as the Porting Company. This article will present considerations you need to make in choosing a Porting Company.
The availability of source code is a big question. Traditional OS ports of Windows CE or Windows Mobile often do not include access to source code as part of the porting package. Linux and Android are licensed very differently, and it should change the way that you look at your OS ports. The Linux kernel, used in Android, is licensed under the GNU Public License (GPL). As such, it requires the Porting Company to release the Linux kernel source code for your project. You should insist on it. If the Porting Company does not provide you with the Linux source code, you should educate them on the legal requirement to do so, or find another Porting Company.
Since Android is licensed under the Apache software license, the Porting Company is not legally required to release their source code. However, you should still request for them to provide you source access for a few reasons:
You may want someone else to maintain the code, possibly your own team or a different 3rd party, which also gives you leverage to get the response times that you need.
You may want to re-use implementation features (e.g. support for a certain GPS chip or camera) across different hardware platforms, or add value to your platform over time. The source code enables you to more easily maintain your hardware platforms.
The source code gives you the ability to do shared development. SDG Systems has used this mechanism successfully with a few different partners. Engineers from multiple teams can access the source, which makes bug fixing and adding new features more efficient.
In some cases, however, you may not be able to get the source code from the Porting Company. One reason you may not get source access is that you may be purchasing a license to use previously-developed code (value-add features provided by the Porting Company). Only you can judge whether or not this condition is acceptable. However, if you are unable to get the source code from the Porting Company, then you should minimally ask for the following capabilities for your Android project:
Access to the platform signing / release keys. These keys give you the ability to sign an app so it can have system-level privileges. Some apps require system-level privileges to do their jobs. For example, many MDM implementations require that the app be signed so they can add or hide functionality from the user.
Ability to configure the upgrade (i.e. OTA) server. Simply put, OTA stands for Over-the-Air. It is the mechanism that Android utilizes to provide system-level updates to an Android device, like OS updates. But it can do much more, like install apps or other files. You should insist that the Porting Company use the Android OTA upgrade mechanism, rather than a home-grown upgrade system. And, that you have the ability to configure the OTA upgrade server to a server of your choosing. That will give you control over the update process, which gives you control of when bug fixes are available to your customer. It also gives the user an experience that is consistent with Android consumer devices.
Ability to add system apps that won't be erased by a factory reset. This functionality allows you to add value to your platform over time, something that is a competitive advantage. One way to do this is by having a separate /vendor partition, so you can install apps into /vendor/app. These apps will be available to the user.
In a future article, we will dive deeper into this functionality. SDG Systems provides Android porting services, and allows you to have full control. We believe that empowering you is better for you and for us. It promotes an open, honest working relationship. Please contact us for more details on how we can help with your Android porting process.