Custom Android ROM

Android custom ROM development services

If you are developing a new hi-tech device, for example, kiosk stand, smart TV set, or a smart device with touch-screen, the most appropriate operating system for you would be Android. It doesn’t require licensing and could be used for powering tablets, system-on-chips and microcomputers.

To adjust Android for special purposes, you will require custom ROM and system app development. This work is not well documented by Google and the most of knowledge related to firmware development is enclosed by manufacturers. Communicating with manufacturers is not easy. All of them are located in China, the engineers have poor knowledge of English, and the managers have poor knowledge of the topics.

If you encounter difficulties with the Android ROM development or tweaking, you can use our services. Our engineers have more than 6-year experience in custom firmware development and we know how to communicate with Chinese manufacturers.

We provide the following services for hardware designers:

Development of the FOTA updates

The privileged apps, tweaked system apps, custom ROM configurations, and boot animations could be installed in the Android ROM by using a signed ZIP files containing special installation scripts, so called FOTA updates. The device should be started in recovery mode, the read-only system partition is mounted as read-write, and the updater script makes necessary changes.

FOTA update could be distributed among your customers so they could update their devices without installing special firmware flashing utilities.

To develop a FOTA update, it is necessary to know how Android boots and how it behaves in the recovery mode. Also, the knowledge of partition table and manufacturer-specific behaviours is necessary. We are aware of device behavior of such manufacturers as Sunxi, Allwinner, MediaTek (MTK), Samsung, LG, HardKernel ODROID, and many others.

Boot logo and animation update

To update the boot animation, you need to create an archive with two sequences of JPEG or PNG files representing the starting and repeating animations. It is important that the archive must be uncompressed. The archive is written in the special path of the system partition (/system/media/ Some manufacturers change the location of the boot animation or provide resolution-specific name for it.

Boot logo is somewhat more difficult to change. The boot logo location is manufacturer-specific. For example, Mediatek places the boot logo on a separate partition (/dev/logo), whereas in Allwinner devices the logo is stored in the bootloader partition.

Besides the updating of the boot logo, we can change the charging animation or update the device behaviour when the power cable is plugged in. The most desirable behaviour would be the start of the Android, whereas some devices (for example Mediatek) are simply showing the battery charging animation. This behaviour could be changed by tweaking boot properties inside the bootloader block.

System app tweaking

Android tools allow the developers to update the app UI layout without rebuilding from sources. This is done by the “apktool” utility which decompiles the Android resources and allows to update and compile it back to the APK file. This method could be used to tweak the system UI of the Android, as well as to update the apps whose source code is not opened by the manufacturer: contacts, SMS, phone, settings, etc.

Installation of the updated apps requires proper signing and developing of the FOTA update.

Development of the privileged system apps

Sometimes you may need to customize the processes which couldn’t be accessible by Android apps, such as installation and updating of new apps, access to SMS, phone, or system settings. These capabilities require system privileges which couldn’t be claimed by the apps installed from Google Play or SD card. System apps should be specially signed and installed into a system partition (/system/priv-app) which is write-protected and requires the development of the FOTA update.

We can analyze the source code of Android to determine which system permissions are required for whatever capability, develop the Android app, give it appropriate permissions, and prepare the FOTA update which installs the app into the system partition.

Root and unroot

Custom Android firmware development usually requires root privileges. Also, the most of manufacturers in the low-price segment enable root in their ROMs by default. However, in the production systems root may be dangerous and not desirable. Therefore, we provide the “unroot” services making the developed device more secure.

Building the custom Android OS

Special-purpose devices may require building the Android OS from its source code. Despite Android is an open-source OS, manufacturers rarely provide their customers with the source code because it usually contains their know-hows. However sometimes it becomes necessary. We are able to build the custom Android OS from the source code provided by the manufacturer. After the OS has been successfully built and tested, it is possible to update its code in order to tweak the functions of system apps, or install new apps required by the business process of that device usage.

The most important thing is to communicate with the manufacturer properly. They should receive as clear technical request as possible so they wouldn’t delay the response due to misunderstanding.

For some devices, we can build the LineageOS (former CyanogenMod) firmware which is open-source and doesn’t require communication with the device manufacturer.

Have more questions?

If you have more questions related to the custom Android ROM development, we would be happy to answer them. Just fill in our contact form and tell us your problem, the device you’re trying to tweak, and the version of Android. Our experts will analyze your problem and provide you with a free consulting on your issue.