Android OS
About Android
The Mobile OS
Android is a mobile operating system - it includes features that make it easier to use applications on mobile devices, such as phones and tablets. Mobile devices and applications face a remarkably large and complex set of requirements. Most embedded products face some of these challenges, but mobile devices are perhaps unique in facing so many. They include:
Extremely high user expectations
High quality and high performance graphics display
Touchscreen interface (multi-touch + gesture input is expected)
High speed storage Integrated camera - image capture, video capture
High quality audio processing
High quality video playback with a large range of codec
Very high information security risks
Frequent Over-the-Air system and application updates
Battery powered device
Complex power management
Integrated battery charging and monitoring
Internet connected
Digital comms diversity
Mobile data, WiFi, Ethernet, USB, Bluetooth, BluetoothLE, NFC
Highly variable comms performance and availability
Not Only for Mobile Devices
Most people are familiar with Android on phones and tablets. But a device does not need to be “mobile” to face many of the challenges that Android addresses.
It is worth considering using Android if your product has a high resolution screen and requires direct user input (buttons or touchscreen). The more mobile-like properties your device has, the more likely Android is to be a good choice.
With our experience of Android, embedded Linux and low-level RTOSs we can work with you to choose the most effective platform for your product.
More Than Just an OS
Android is much more than an operating system, it is an entire hardware and software ecosystem. When you choose to develop an Android based product you benefit from:
A huge amount of support from component manufacturers, including:
Android Board Support Packages for development kits and reference designs
Android device drivers and HAL support
Android-specific example code and technical support
A global community of developers
Widely used build systems and test frameworks
A vast Open Source software library
Frequent security updates and bug fixes
Google does the hard work of monitoring changes to all the components that make up recent versions of Android and determines which changes are important
Google publishes the latest set of security and bug fix patches every month
AOSP - The Android Open Source Project
AOSP is the foundation of Android. Companies such as Google and Samsung start with AOSP and add their own secret sauce to their Android products.
The Android products that most of us are familiar with are more than AOSP. They all include the Google Mobile Services (GMS) package. GMS includes Google Maps, the Google Play Store, Chrome mobile browser, Integrated Google search and much more. Anyone can use AOSP, but to include GMS there are a number of regulatory, test, certification and licensing hurdles that must be negotiated with Google.
GMS is really a requirement if your product is a mass-market consumer device, where the user expects to have access to those Google services it provides. If the product “Has to be Android”, rather than just Android-like, then you will need GMS.
Typically, the sorts of products we are involved with do not need GMS. AOSP is used because it solves many of the technical issues faced by the product, not because the product “Has to be Android”.
Using Android In Your Product
Many hardware vendors provide a version of Android that runs on a development kit or reference design. This is an essential starting point but it is only the very first step in developing your product.
The Android kernel makes use of the Linux kernel, but Android is very different to a typical Linux based embedded system. It is common for experienced Linux developers, believing the two systems to be similar, to start on an Android project only to find themselves facing a very steep learning-curve.
Rather than spending development time on getting Android working on your hardware, you want to focus your time on making your application work well. We can help with both of these areas.
Android applications are almost always written in Java but use an Android-specific Java Runtime Environment. This is something your developers will need to become familiar with.
You can write application code in C/C++ and other languages, but you will need to use the Android NDK (Native code Development Kit) to integrate this code into a Java application.
Specialist platform services and high performance code are usually written in C/C++ with an NDK Java class interface provided so that Java application code can make use of them. It can be a little tricky to design an NDK interface that makes it easier to write the Java code. A lot of experience is needed to ensure the interface is efficient and correctly manages Java object lifetimes.
Our Android Knowledge
How We Can Help
We can work with you at a level that best suits your company’s immediate and long-term development needs, including:
Providing a complete platform and application development service - we can cover all software areas and develop a turn-key product to your specifications.
Providing lower-level platform development support - working with your chosen hardware, we can give you a stable operating system and free up your development team to focus on the application.
Working alongside and aiding your development team - we can directly assist with any challenging issues while also easing their learning-curve. We can help establish strong development and maintenance practices as a core competency of your team.
Key Android Tech Areas
Native code Development Kit (NDK)
Compatibility Test Suite (CTS)
Board Support Packages (BSP)
Hardware Abstraction Layer (HAL)
Over-the-Air updating (OTA) - packaging, update scripts (Edify) and recovery
Kernel drivers, device tree
Boot loader, fastboot
SELinux
Android init
Android build system - porting packages to Android build
Our Experience
Our work with ikeGPS on their IKE 4 product is a great example of how we can help with Android development. We took care of all the hardware integration issues and framework wrangling to ensure IKE developers could focus solely on their application.
Read more about the IKE 4 and how we assisted ikeGPS with their Android development.
Tech Areas
Our Key Areas of Strength
Next Steps
More Software Capabilities
Find out more about our other capabilities and how we can help.
Contact
If you are looking for help with a project or product idea, we'd love to talk.