Digia announced an Android and Linux-targeted embedded version of its cross-platform Qt GUI framework called Qt Enterprise Embedded that combines a Qt Creator based IDE with a new embedded Boot to Qt stack. The Digia-backed Qt project also released the beta of Qt 5.2 with a new Scene Graphic renderer and the first production-ready support for Android and iOS.
Since Digia acquired the commercial Qt framework from Nokia in 2011, and stewardship of the open source Qt project in 2012, the Finnish company has been pushing to expand support to Android and iOS. That transition is finally complete, with the first production-ready Qt ports of Android and iOS in the beta version of Qt 5.2 (see farther below), as well as a new Android-ready commercial embedded implementation called Qt Enterprise Embedded.
Digia’s new embedded-specific Qt platform combines an Ubuntu Linux-based desktop integrated development environment (IDE) based on Qt Creator, Qt’s drag-and-drop GUI builder, as well as an embedded stack for Android and embedded Linux targets. The latter is built on Boot to Qt, which was released as a preview back in May.
Qt Enterprise Embedded architecture
(click image to enlarge)
The Qt Creator based development environment runs on Ubuntu 12.04 LTS and higher 64-bit desktops. Qt Enterprise Embedded lets developers access Qt Enterprise libraries and device deployment directly from Qt Creator, and connects to targets via USB or a network. The application can also be deployed to an included emulator on the host system that runs the same software stack as the target device.
Boot to Qt is a lightweight software stack based on Qt that installs directly on Android or embedded Linux target hardware. Pre-built images from the Qt Enterprise Embedded development environment are copied to the target device’s memory card or internal memory.
The “lean” Android build in Boot to Qt is based on the Android kernel and selected middleware. Digia replaced the entire top Java layer including graphics and the Dalvik VM with Qt and its QML scripting language. The stack also strips out Android’s Zygote process layer and the Android home screen for “better customization of the device’s user experience,” says the company. The embedded Linux stack, meanwhile, uses the traditional Linux kernel and is based on the Yocto Project’s Poky reference system.
The initial list of supported target hardware includes:
- Google Nexus 7 tablet (Tegra 3, ARM Cortex-A9) – Android 4.2
- Beagle Board xM (ARM Cortex-A8) — Android 4.1 and Linux
- BeagleBone Black (TI AM335x) – Linux (coming soon)
- Boundary Devices SabreLite (Freescale i.MX6) — Android 4.2 and Linux
- Raspberry Pi Model B (ARM11) — Linux
In addition to these targets, the software can run in Android or Linux mode on the emulator. Digia also provides services to port the software stack to custom hardware.
Qt 5.2 beta
The open source Qt framework, upon which Qt Enterprise Embedded is based, is now available in a 5.2 beta. The key enhancements are the new production-ready ports to Android and iOS, which follow preliminary ports in this July’s Qt. 5.1 release. The platform already supports Blackberry 10 and embedded Linux, as well as all major desktop PC platforms.
Qt 5.2 adds improved time zone and locale support, enhancements to multiple Qt Widgets, improved animations, mobile specific controls on Qt Quick Controls, and enhanced accessibility support. There’s also new positioning support using NMEA data, or in the case of Linux, GeoClue. Linux developers can also use a new Linux Bluez 4.x Bluetooth module.
The new release includes Qt Creator 3.0, which offers improved Android support and experimental iOS support. Creator 3.0 also provides a cleanup in the Creator plugin APIs, and improved support for lldb, says the project.
Qt Enterprise Embedded is available now at an unstated price. More information and links to a 30-day free trial may be found on the Qt Enterprise Embedded product page and blog announcement. More information on the free, open source Qt 5.2 beta, with links to downloads, may be found at the Qt. 5.2 announcement page.