Release Note Harmattan target for Qt SDK
2012-03-13
This release is an online update to the existing MeeGo1.2 Harmattan target for QtSDK (released on 2012-02-01, see the changelog for full details).
As before, this version of the Harmattan target supports application development for the Nokia N9 device. (The resulting applications are usable on the Nokia N950 limited release developer device as well).
Improvements and fixes
- Rotation support for N9 added to Simulator.
- Qemu runtime emulation environment available for PR1.0. PR1.1 and PR1.2 releases.
- Harmattan applications are rendered correctly in the Simulator Debug mode.
- Qt Quick components have been upgraded to version 1.2 in the Simulator.
- The instrumentation dashboard is updated (use package manager of the SDK maintenance tool to install this experimental component).
- The following PR1.2 specific APIs are available for download from the public repository:
- FCam Camera Control API (can be used on all versions of device software)
- NDEF message handling (can be used only with PR1.2 version of device software and beyond)
Known issues
- SFTP upload to Harmattan device fails for large applications
- Default manifest.aegis has the for-path tags in wrong place
- QtComponents Gallery and Extras sample application source code do not work out of the box in QtSDK. Use the fixed code available below:
- Harmattan-specific Qt Quick Components are not supported in the Designer.
- When using plain QML items (i.e., not Qt Quick Components), anchor them using other items in the UI instead of using explicit x,y positions as provided by the Designer.
- Simulator does not render fonts correctly when their size is specified using points. Workaround: use pixelSize instead of pointSize.
- Remote compilation does not work (not an issue, since the appropriate cross-compilation tools are available for all supported host environments).
QEMU specific issues
- Ensure that you close the existing QEMU window before switching to another version of the Qemu runtime.
- Occasional connection timeout errors may occur. The workaround is to increase the connection timeout settings from 30s (default) to 60s for QEMU in Qt Preferences (Tools -> Options -> Linux Devices -> Device Configurations).
- After QEMU is installed separately,
- QEMU configuration may not appear immediately in the device list. A restart of the QtCreator is required.
- If a device configuration already exists, QEMU configuration may not be automatically added. In this case, you need to add it manually.
- The QEMU environment does not support the full set of sensors (ambient light, magnetometer, proximity and tap are supported).
API issues
- If you use TextEdit element in a plain QML application, the virtual keyboard is not hidden when the element loses focus. As a workaround, you can call TextEdit.closeSoftwareInputPanel() before setting its focus to false. However, it is recommeded to use the Qt Quick components and its TextArea element instead, that does not require any workarounds.
- In applications developed with Qt WebKit the virtual keyboard is not automatically hidden when it is unfocused. A workaround consists of adding an event filter to the affected view instance:
class EventFilter : public QObject { protected: bool eventFilter(QObject *obj, QEvent *event) { QInputContext *ic = qApp->inputContext(); if (ic) { if (ic->focusWidget() == 0 && prevFocusWidget) { QEvent closeSIPEvent(QEvent::CloseSoftwareInputPanel); ic->filterEvent(&closeSIPEvent); } else if (prevFocusWidget == 0 && ic->focusWidget()) { QEvent openSIPEvent(QEvent::RequestSoftwareInputPanel); ic->filterEvent(&openSIPEvent); } prevFocusWidget = ic->focusWidget(); } return QObject::eventFilter(obj,event); } private: QWidget *prevFocusWidget; };This filter can be installed on a QGraphicsView or (in QML) on a QDeclarativeView instance:EventFilter ef; view.installEventFilter(&ef);
- If you use the QML Camera or Video elements of the Qt Mobility Multimedia API, use QGLWidget as a viewport or the application crashes when swiped. In other words, the main.cpp should look something like this:
#include
Correspondingly, include the following line in the .pro file:#include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QDeclarativeView view; view.setViewport(new QGLWidget()); view.setSource(QUrl("qrc:/qml/main.qml")); view.showFullScreen(); return app.exec(); } QT += opengl
- When using the Maps API, a lot of warnings are output by platform code. Some of these are confusingly written, but can be safely ignored:
e.g. even if the following appears, the application is able to
successfully utilize the Nokia maps plugin.
QColor::setNamedColor: Unknown color name 'APPID' QColor::setNamedColor: Unknown color name 'TOKEN'
Linux-specific issues
- Some QML example applications default to QMLViewer instead of simulator when imported (leading to e.g. orientation being handled wrong).
- If the Qt Simulator database is corrupted, messages such as
( ID ) Failed to prepare query; error:"no such column: parentthreadid..."
appear in compile output tab, remove the qmailstore.db file in ~/.local/share/data/Nokia/QtSimulator
Windows-specific issues
- It may take several attempts before the host recognizes a newly plugged-in device. If connecting the device does not make it visible in the networking control panel, unplug and reconnect the device. Note, however, that the operating system may need to install additional drivers for USB connectivity. Do not interrupt these operations by unplugging the device too soon.
- If the USB network driver is not installed automatically during the installation of the SDK, and it is not visible in the SDK maintenance tool's package manager, perform the installation manually (requires administrator privileges):
- Open the command prompt.
- Navigate to the Qt SDK installation directory.
- Run the SDK maintenance tool with the following additional argument: SDKMaintenanceTool.exe --show-virtual-components.
- Select "Package Manager" and click Next.
- Under Development Tools > Maemo Toolchain, select SB Network Driver and click "Next".
- Click "Update".
This sequence is explained in full detail in the Harmattan Developer Library. - Select the "Use asynchronous mode to control the inferior" checkbox in QtCreator debugging options. This ensures that no processes are left after when a debugging session is aborted.
Mac OS X-specific issues
- If the Qt Simulator database is corrupted, messages like ( ID ) Failed to prepare query; error:"no such column: parentthreadid..." appear in compile output tab. Remove the qmailstore.db file in ~/Library/Application\ Support/Nokia/QtSimulator
- Qmldump may occasionally fail during the import of an existing project. This is an error, but the project remains usable without any changes.
Developer Documentation
Full developer documentation is available through the N9 Development Portal page at: http://developer.nokia.com/swipe.
Quick Links
- MeeGo1.2 Harmattan Developer Library
- MeeGo1.2 Harmattan API Reference
- MeeGo1.2 Harmattan Platform API Reference
- N9 Developer Blog
Disclaimer
Copyright (c) 2012 Nokia Corporation. All rights reserved.
Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation.

