Today we are making available the Qt 4.7.4 release bundle for all Symbian^3, Symbian Anna, and Symbian Belle devices. The Qt SDK 1.1.4 update has the necessary Symbian Anna and Belle build targets available allowing application development for Qt 4.7.4. Nokia Store deployments are also possible.
This is a big release for Qt developers. In this blog post I’d like to present an overview of the current Qt deployment situation on Symbian devices. The later part highlights the most important changes we have in the Qt 4.7.4 release bundle from the Symbian perspective. Those of you who know the Qt Symbian deployment history can skip directly to Qt 4.7.4 section.
Qt deployment on Symbian devices
The first officially supported Qt release for Symbian devices was Qt 4.6.3. It was released together with Qt SDK in June 2010. Following this, applications created with this SDK could be deployed to Nokia Store (or Ovi Store as it was known then). Then this year in May 2011 Qt 4.7.3 for Symbian with Qt Quick was made available in the Qt SDK 1.1, and Qt Quick applications could be deployed to Nokia Store.
Qt was not available right away as pre-installed in any Symbian devices when Qt 4.6 was made available for Symbian. In fall 2010 the Nokia N8 was released and it was the first Symbian device with pre-installed Qt. Then in the middle of 2011 Symbian Anna was made available with the Qt 4.7 -based bundle with Qt Mobility 1.1. Now the latest Symbian Anna devices have out-of-the-box support for Qt Quick.
For older S60 3rd and 5th Edition devices Qt is an add-on component requiring initial download of Qt libraries on the first Qt application installation. A special deployment mechanism called Smart Installer is used to deploy Qt to devices such as these that do not have Qt as pre-installed or in the firmware.
When the user downloads and installs a Qt application, Smart Installer checks package dependencies and installs Qt and other support modules when needed. Modules are also upgraded to newer versions when necessary. Normally this happens when the user downloads an application from Nokia Store.
Smart Installer is the main deployment channel for the Qt release bundle to S60 3rd and 5th Edition devices. Smart Installer also updates Symbian^3 devices’ pre-installed Qt 4.6.3-based bundle (that resides on the C: drive), to the Qt 4.7.3-based bundle. Furthermore, an important reason for Smart Installer deployments is the fact that Symbian^3 devices do not have the pre-installed Qt Mobility module. Hence, before the application is installed on Symbian^3, often at least the Qt Mobility module is deployed unless it is already deployed by earlier application installations. Developers have always been advised to take into account this additional download need because it increases the application’s delivery size.
In July 2011 Qt Quick Components 1.0 for Symbian was released with Smart Installer deployments for Symbian Anna devices.
Today’s Qt 4.7.4 bundle is the next big Qt release with many improvements for Symbian OS. This release is shipping already in the new Symbian Belle devices, like Nokia 700 and Nokia 701, as part of the device firmware. Now we are making it available also to devices with Symbian Anna (and Symbian^3) through Smart Installer deployments and we are also bringing finalized Qt SDK support.
Qt 4.7.4 release bundle for Symbian
The Qt 4.7.4 release bundle contains
- Qt 4.7.4,
- Qt Quick 1.1,
- Qt Mobility 1.2 (see separate what’s new topic too),
- Qt WebKit 2.1.1, and
- Qt Quick Components 1.1 for Symbian.
It is supported in Symbian Anna (and Symbian^3) devices onwards. Most benefits mentioned in the Qt 4.7.4 release post by Jarmo are valid for Symbian, too. In general, this release has a huge amount of stability, performance and functionality improvements for Symbian. Many of the changes also make Qt better integrated to the Symbian operating system services.
In Qt graphics system for Symbian there are big changes in how graphics resources are managed in the default OpenVG graphics system used by Qt applications. We are also introducing the opt-in OpenGL ES based graphics system to wider use with better resource management as part of Qt 4.7.4. Both of these changes improve the use of scarce GPU memory and have better graphics memory releasing schemes when applications are moved to background. We have also better integration to Symbian OS transition animations. This means that when stopping and starting Qt applications there are smoother animations that are also better aligned with the same effects presented with Symbian OS Avkon applications.
Regarding the user interface, Qt Quick Components 1.1 and Qt Quick 1.1 modules provide the biggest improvements. There’s another post by Sami detailing changes available for components. For both we have also changes explained in the Qt Quick – What’s New and Qt Quick Components – What’s New documents. The use of Qt Quick Components allows application to achieve the new Symbian UI Design Guidelines. This means that Qt applications match and are consistent with the native applications on Symbian Belle devices.
In the “core” of Qt there are plenty of minor improvements and bug fixes to UI features. Often these fixes will improve all style of Qt applications regardless of the UI technology: QWidgets and graphics view based and QML UIs too. For example, on physical keyboard devices Nokia E7 and Nokia E6, text editing key accelerometers (ctrl+c/ctrl+v) work now out-of-the-box in editors without any need for an application to implement such copy/paste functionality.
Perhaps the most welcomed UI feature of Qt 4.7.4 is the integration of Qt text input system to the Symbian partial screen text input component also known as split-view input. The split-view input is a new virtual keyboard in Symbian Anna where it is used in many native Avkon applications. It allows application content to be visible above the split-view keyboard. This is in contrast to the earlier full screen input that didn’t allow application content to be visible during text input. In Qt 4.7.4, the split-view is now integrated into all editor widgets in graphics-viewbased UIs including Qt Quick/QML editors. By default this feature is disabled because the split-view input needs application awareness due to layout change in the visual area of the application when the new keyboard is opened. It is enabled by setting the application attribute
Qt::AA_S60DisablePartialScreenInputMode to false. Qt Quick Components 1.1 uses this split-view feature too and it will be available when application starts to use the new
import com.nokia.symbian 1.1of the components. The import 1.0 still uses the full screen input. So in other words, Qt Quick 1.1 or plain-Qt applications turn it on with the application attribute but Qt Quick Components 1.1 using applications with the new 1.1 components import.
Qt 4.7.4 also enables the new Symbian Belle features like the new iconic toolbar support: QActions can have SVG images and the new Symbian OS toolbar icon set can be accessed via QStyle API. As mentioned, Qt Quick Components is provided as an easy way to align the application UI to the new UI style. For example, using StatusBar from the Qt Quick Components allows an application to automatically provide access to the new Belle UI’s status panel feature that is opened by doing touch swipe down gesture on top of the status bar.
Qt Quick with Qt Quick Components is the recommended UI solution for Symbian applications. In fact we have documented that old QtGui module widgets on Symbian are deprecated and developers should use Qt Quick Components instead in new application projects. In that document we also have a list of widgets that should never be used from QtGui module on Symbian because they have never been supported or worked properly.
The last new UI feature worth mentioning is the TV-out support in Qt 4.7.4. When using TV-out, this feature makes possible to use TV display as an independent screen rather than just clone of the device screen. Applications can provide different control view on device screen and a presentation mode with larger resolution on the TV-out display. It works with devices with either analog 3.5mm composite video output or HDMI output.
By default, in Symbian devices the content shown in TV-out is a clone of the device screen. From now on, however, parenting a widget to
QDesktopWidget::screen(1) and calling
show() will turn off cloning and have different content shown instead. The screenCount member function and the screenCountChanged signal can be used
to detect the availability of the secondary display, just like on other platforms.
Together with Qt 4.7.4, the Qt Mobility module is updated to version 1.2. The main new features are the two new local communications APIs: NFC (Near Field Communication) and Bluetooth. Bluetooth is a basic feature in all Symbian devices but NFC is a new hardware feature only in latest device models. The NFC hardware support is however becoming rapidly available. All new Symbian devices – Nokia 603, Nokia 700 and Nokia 701 – are NFC-enabled. From the earlier Symbian devices only Nokia C7 is NFC enabled. To find out more on the NFC development check the Introduction to NFC guide from Nokia Developer and the general NFC page.
There are other minor improvements and lots of bug fixes in Qt Mobility as well. For example, QAudioOutput class has now a proper support for pausing in Symbian. Earlier, calling suspend via API was emulated by using stop underneath the implementation that caused delays on doing resume later. Video outputs are rendered now with black when nothing is rendered. This improves UIs when QML video and camera elements are used.
There has been lot of effort made in Qt 4.7.4 to improve the memory management. Applications using Qt 4.7.4 libraries normally consume less RAM than using earlier Qt libraries. Symbian platform uses predefined sizes for stacks and heaps. However, application developers need to be very careful on memory usage. If an application exceeds stack or heap limits, it may crash or fail to complete its task. Crashes that seem to have no reason can often be traced back to insufficient stack and/or heap sizes. Application developers should use reasonable values for maximum heap size. Either too small or too big value could cause the application’s failure. Other than RAM, there is very limited video/graphic memory of 32 MB especially in Symbian^3 and Symbian Anna devices (the new devices that shipped with Symbian Belle have four times larger GPU memory of 128 MB). It’s important that applications using large graphics resources follow graphic memory handling guidelines.
The rest of this post talks of non-feature aspects of this release: what kind of build targets we have in Qt SDK and how the Symbian support is aligned with Qt found in Nokia N9. But first, I’ll explain one internal change that is good to know.
Qt is in firmware from Belle onwards
For Symbian Belle users the Qt 4.7.4 bundle is available in the firmware. In fact, this is the first time Symbian devices have Qt as part of the firmware (ROM). One reason for this is that more and more Nokia -provided device applications themselves will be dependent on Qt. Because of the dependency, Qt has become integral part of Symbian software stack. Thus it is also necessary to have it as a part of the firmware rather than in more volatile user memory (C:-drive). One of the first Nokia -provided Qt Quick-based applications is the new Nokia Store. Upcoming Symbian SW updates (firmware or add-on SW updates) will roll out more Qt and Qt Quick-based applications.
Since Qt is being updated together with the firmware updates we have more detailed build version numbering in use. The Qt 4.7.4 bundle was made available already earlier this year in the new Symbian Belle with their PR1.0 firmware. These devices have the Qt 4.7.401 build version. PR1.01 has 402 build version number. The upcoming Belle release for existing Symbian devices (Nokia N8, C6-01, C7, E7, E6, X7) is again a little bit improved Qt (4.7.403) with further bug fixes. Users of the new Belle devices (Nokia 700, 701, 603) get these fixes in upcoming firmware versions. For Belle devices there will be no Smart Installer updates of Qt as users get the latest version by updating the device firmware. However, since Qt Quick Components is an add-on for new Belle PR1.0X devices and not a part of the firmware it is being deployed using Smart Installer. In the upcoming Belle PR1.1 firmware updates, Qt Quick Components 1.1 is delivered in the firmware as well.
For more details on what Qt modules are supported and pre-installed on Symbian devices, see Qt Creator documentation topic on Symbian development. We also have very detailed information available about what Qt versions and what modules are supported in different devices and how on Qt Developer Network’s Support for Symbian document. Most of the time developers do not need to care all these details as Smart Installer ensures if modules need to be deployed.
Qt SDK support for Symbian
The new Qt SDK 1.1.4 has now updated support for the Qt 4.7.4 release bundle for Symbian devices. It is enabled in two Symbian build targets:
• Qt 4.7.4 for Symbian Belle
• Qt 4.7.4 for Symbian Anna
The Anna target is by default available from offline installer and optional Belle target only via online installers. Because of Anna update, Smart Installer deployments with the Qt 4.7.4 bundle are also available to Symbian^3 and Anna devices.
The Symbian Anna target is meant to replace the earlier Symbian^3 Qt 4.7.3 target and it is compatible with the same set of devices: all Symbian^3, Symbian Anna as well as latest Symbian Belle.
If you use the Symbian Belle build target, it puts a dependency in the application package to Symbian Belle devices. If the end user tries to install such application to an earlier device, the application installer gives a warning of incompatibility. It should be used only if such install restriction is needed for the application.
The Symbian OS native APIs in these build targets come from the OS releases they are named after: Symbian Belle target has native API available from Belle.
The Qt 4.7.4-based bundle is not supported in S60 5th Edition devices where the last supported Qt version is Qt 4.7.3. To support this Qt SDK 1.1.4 has the Qt 4.7.3 for S60 5th Edition build target (this was earlier named as Symbian^1).
Symbian devices with S60 3rd Edition (feature pack 1 or 2) or generally any devices with Qt 4.6.3 are no longer supported in Qt SDK 1.1.4. If you want to continue application development with Qt 4.6.3 in Symbian/S60 devices you should use an earlier Qt SDK 1.1.2 release. This 1.1.2 release contained still the Application TRK debugging tool support that is the best solution for these earlier devices. There is also build targets available. Later SDKs have only CODA debugging functionality that works only on later Symbian releases. Please note that when developing for Qt 4.6.3 you should not use the Qt Creator / SDK update mechanism as it will remove the old targets you need for Qt 4.6.3 development.
If you are developing or updating applications for Symbian Anna (also Symbian^3) or Symbian Belle devices you should start using the Qt 4.7.4-based bundle and build targets. This allows you to enable the latest functionality, for example, the new Qt Quick Components 1.1 release.
Qt Quick Components 1.1 and Qt SDK
Qt SDK 1.1.4 ships a separate Qt Quick Components 1.1 for Symbian support. Its tooling support installs to all relevant Qt 4.7.4-based build targets: Symbian Anna, Symbian Belle, Qt Simulator and Desktop. The Qt Quick Components 1.1 support is replacing Qt Quick Components 1.0 for Symbian. This means that applications will get dependency to the Qt 4.7.4 bundle.
Qt Quick Components uses features from Qt 4.7.4. For example, features in Qt Quick 1.1 for left-to-right layouts support and split-view inputs are from Qt 4.7.4.
Since Qt Quick Components 1.1 (
import com.nokia.symbian 1.1) delivers several usability improvements and bug fixes, it is highly recommended that developers take that into use in their Qt applications.
See Sami’s blog post for more information about Qt Quick Components 1.1 release.
Nokia N9, MeeGo 1.2 Harmattan alignment
The Symbian Qt 4.7.4 bundle is having the same Qt modules and APIs as the Nokia N9 with MeeGo 1.2 Harmattan. Of course both have platform-specific APIs that are also accessible with Qt SDK but the high-level Qt APIs are aligned. When the platform-specific UI consistency is needed the Qt Quick Components set for Harmattan or Symbian needs to be used. If plain Qt Quick 1.1 is used, it’s very straightforward to get the application to work in both platforms. It is relative easy to use Qt Quick Components for Symbian and MeeGo in a same application project to achieve application portability between Nokia N9 and Symbian devices. See the porting guide on how to do this.
How about Qt 4.8 in Symbian?
Currently Qt 4.8 Release Candidate is available for the desktop development only. There is work on going inside Nokia that would make Qt 4.8 available and deployed into future Symbian releases. However, at the moment application developers should focus on features available in Qt 4.7.4 and earlier versions when creating Symbian applications. Many of the improvements in Qt 4.8 are transparent optimizations in Symbian Qt port, so they do not require application changes.