Qt or Android: A simple question, lots of implications
Whether you are designing smart cooking appliance, medical device, or any kind of embedded device with a fancy user interface, chances are, this question will pop up: How do we create that rich UX exactly? Should we go for the industry standard with Linux and Qt? Or should we leverage Android’s features?
And honestly, that’s a pretty good question. Both have their merits. We all saw the kind of application and UX we can create on Android smartphone: Fluid (or not) animations and effects, touch friendly, and third-party application. On the other end, the industry leans heavily toward Linux-based distributions for their reliability and flexibility, while Qt is one of the most popular frameworks for embedded.
There are truly many criteria to consider: security, performance, flexibility, affinity with the technology stack, capabilities, and more. So as an Engineer, Technical Lead or Product manager, how do you make an educated decision? Well because we love a challenge, we put them to the test with a head to head comparison, by creating the same application… twice!
An original experiment
Three engineers set out to determine which of the two solutions would be the best foundation for an embedded software project.
Instead of looking at features only or contributing yet another opinion to the Linux/Qt vs Android debate, Witekio’s engineers took a practical approach and decided to build an application from scratch on an i.MX 8 board specifically geared to deal with connected objects.
Julien first investigated the low level challenges comparing Android and Linux performance on an i.MX 8 Quad board. Then, Erwan and Stephen took over for the application part. Erwan by building a version of the application on top of Android OS, and Stephen by doing the same using the Qt toolkit.
To quote the engineers themselves: “By developing both applications simultaneously, we were able to get a real handle on the strengths and weaknesses of both Android and Qt,” said Stephen. “The board was the same, the OS was the same, the specifications for the application was the same, the only difference would be the underlying software frameworks, and we could see which would come out on top.”
Building a music player from scratch
While each of the music players would be built on different frameworks and using different software languages (C++ for Qt, Java for Android), the functionality needed to be the same:
- Provide a fluid user interface to interact with
- Select artists’ discographies to download songs
- Display a list of songs, filter those songs by artist, album, or genre
- The application must be capable of reading a song’s metadata to enable this filtering, and for display purposes
- Actually play music! Pretty essential for a music player, including the standard controls (play/pause, a progress bar, volume control, next/previous track buttons).
- Provide minimized controls on other screens.
Erwan and Stephan tracked their experience working with their competing frameworks and reported on the pros and cons of each throughout the project, and again at the conclusion of the project. These reports and the expert opinions that inform them form the basis for the new Witekio white paper that may finally put the Qt vs Android debate to rest.
More than just a write-up of laboratory notes, this white paper from Witekio takes the battle between Qt and Android head-on.
It opens with a general discussion of the context for this Qt versus Android debate. The white paper explains the common reasons for choosing either the Android or Linux and Qt framework. Including the advantages that accrue to the former’s Google Play Store updates and the latter’s memory and CPU economy.
Whether clocking an optimized boot speed, comparing the speed to a proof of concept (POC) software solution, or assessing the need for RAM, Linux was the platform that came out on top.
At the core of the white paper is the comparison between Qt and Android across three criteria:
1/ Framework features
2/ Development ease
3/ Development speed
For each criteria Witekio’s experts explain how each framework fares and offer clear examples as to the strengths and weaknesses of each approach in the context of the development process. Specifically, Witekio’s team explains the impact of the frameworks on:
- The application’s architecture
- The user experience design and features (design, implementation, internal navigation, component display)
- File manipulation for discography selection and downloading (file system, file import, search)
- Data manipulation for discography presentation and filtering (modeling, filtering, graphics)
- Multimedia feature, media metadata, audio playback
- Controls and accessibility
- Overall ease of development
Finally, an answer
By focusing on mounting an experiment that pitted the two frameworks against each other instead of theory-only and guts feelings, Witekio’s white paper can explain definitively why one of the frameworks is judged superior to the other.
It was a close-run. Qt is stronger when it comes to pure UX, the Android development environment offers better developer assistance and debugging, and both are strong when it comes to manipulating media files. In the end, though, there is a winner, and our white paper explains why it is the better choice in the context of our Embedded Music player app.