Sie sind auf Seite 1von 65

Nokia Qt SDK in Action

Qt Developer Days
2.11.2010 Pekka Kosonen
Head Of Technology Development, Forum Nokia

Slides are available in http://www.slideshare.net/pkosonen


Soup of today
Ingredients are:
1. Overview and demo of Nokia Qt SDK 1.0

2. Taking your Qt app to Nokia platforms using


Nokia Qt SDK
• The topics that you need to know about
Symbian and Maemo and how to handle
those.

3. Publishing to Ovi and Ovi Store Symbian


Signing Service

4. Spicing up the soup with platform SDKs


• When you might want to tap into
platform specific SDKs – focusing on
Symbian.

Slides are available in http://www.slideshare.net/pkosonen


Rich told you the
opportunity – 100 M devices
I will tell you how you reach
that install base

Slides are available in http://www.slideshare.net/pkosonen


What we
Where have
weused now
to
will be have

Slides are available in http://www.slideshare.net/pkosonen


Now - Nokia Qt SDK 1.0 overview
Install. All in just one package.
Easy to customize and update.

Simulate. Fast, easy to use and


lightweight simulator.

Create. Qt Creator - Easy to use IDE

Install Develop Simulate Deploy*

Update

http://www.forum.nokia.com/Qt
Simulator

• Quick launch

• Simulate Qt Mobility project features

• Scripting possibilities

• Skins for different platforms / form-factors


On-device Debugging

Debugging host
Qt Creator
Switching Target Platforms

• Select Symbian or Maemo target


• Build, deploy and debug

• Supports also switching the target


to Remote Compiler or
Symbian Emulator
Remote compiler

• For Mac and Linux local builds for Symbian are not
supported

• Builds can be done remotely using remote compiler


– When installing Nokia Qt SDK select remote compiler from the
„Experimental‟ section
– Your application sources are sent to a Nokia server where the
build is done
– You get back a ready installer package (sis for symbian, deb for
maemo)
Coding demo 1
//geoflickr, using location API, fetch
//pictures from flickr taken near you.
//run in simulator, N8 & N900

Geoflickr – simulator, symbian, maemo


Taking your Qt application to
Nokia platforms

The topics to consider


Taking your app to Nokia
platforms – the laundry list
Symbian - minimum laundry list Maemo - minimum laundry list

1. Optimize the app 1. Optimize the app


2. Get an UID
3. Figure out the capabilities
4. Do an icon 2. Do an icon
5. Modify .pro file 3. Modify .pro file
6. Test on several devices 4. Test on the Nokia N900
7. Create a sis file with Nokia Qt 5. Tweak the debian files for
SDK Nokia Qt SDK
8. Sign the sis file 6. Create the debian package
9. Take smart installer into use
10. Distribute the embedded pkg 7. Distribute
Optimization
• Know the limitations of the target devices.

• To provide the best experience optimize


– UI
– Resource usage: Memory, network usage, speed
• UI optimization, atleast:
MainWindow w;
w.showFullScreen(); //w.showMaximized();
• Network usage : avoid significant data transfer, atleast
if not in WLAN
• Consider the usage of Qt Webkit in your application.
Application features
• When taking your application
from desktop to smartphones
don‟t stop when you get it
working. Think about how you
can improve the user experience
with mobile specific features.

• Qt + Mobility offers already a


pretty comprehensive set of
features.
– You might still want to spice up your
application with some platform
specific use cases like home screen.
Symbian platform security -
background
1. Capability model
– APIs protected with capabilities
– Indicates application signing
2. Process identity
– Each process has a unique identifier (UID)
3. Data caging
– Apps can‟t access all data on the device

• http://developer.symbian.org/wiki/index.php/Platform_Security_(F
undamentals_of_Symbian_C%2B%2B)
• http://www.forum.nokia.com/Distribute/Packaging_and_signing.x
html
• Symbian signed test criteria : http://tiny.symbian.org/testcriteria
Capabilities
Ovi Store Symbian
Signing Service
and signing
Capability Group Capability Name Self-Signed Open Signed Open Signed Express Signed Certified
Online Offline Signed
User Capabilities LocalServices Yes, with user Yes Yes Yes Yes
Location confirmation at
install time
NetworkServices

ReadUserData
UserEnvironment

WriteUserData

System PowerMgmt No Yes Yes Yes Yes


Capabilities ProtServ
ReadDeviceData

SurroundingsDD

SwEvent
TrustedUI
WriteDeviceData

Restricted CommDD No No Yes No Yes


Capabilities DiskAdmin
NetworkControl

MultimediaDD
Device AllFiles No No No No See below
Manufacturer DRM
Capabilities TCB
UID for Symbian applications
• Each process has a unique identifier (UID)
• Can be obtained from Ovi Store Symbian
Signing Service (or Symbian signing)
• No cost included
• Defined in the applications .pro file
symbian {
#application UID here
TARGET.UID3 = 0x21234567
}
• For testing you can use any UID starting with 0xE, user
capabilities and self signing
Figuring out the capabilities
• Majority of Qt applications will manage with
the user and system capabilities.
– With few known exceptions, f.ex Bearer Mgmt APIs
certain use cases require NetworkControl

• How do I figure out the capabilities?


– Documentation
– Try, Error, Fix…
– Use Symbian platform tooling – demo later on…
Icon
• Use SVG-T
• See examples, f.ex
„C:\NokiaQtSDK\Examples\4.6\animation\animatedtiles\
animatedtiles.pro‟ includes symbianpkgrules.pri file
which defines the following

vendorinfo = \
"; Localised Vendor name" \
"%{\"Nokia, Qt\"}" \
""\
"; Unique Vendor name" \
":\"Nokia, Qt\"" \
""

examples_deployment.pkg_prerules += vendorinfo
DEPLOYMENT += examples_deployment

isEmpty(ICON):ICON = $$PWD/qt.svg
Symbian platform security – “how to” in Qt
• Everything you need in a Symbian OS MMP file, can be defined in the Qt
.pro file
– Symbian-specific extensions should be defined inside a special block as
shown below
TARGET = HelloWorld // Not Symbian-specific
TEMPLATE = app // Not Symbian-specific
symbian {
// LIBS-keyword as such is not Symbian-specific, but bitgdi library is
LIBS += -lbitgdi
ICON = ./images/myIcon.svg
TARGET.UID2 = 0x100039CE
TARGET.UID3 = 0xA000017F
TARGET.SID = 0xA000017F
TARGET.VID = 0x70000001
TARGET.CAPABILITY = NetworkServices Location
// Qt app stack typically larger than 8kb
TARGET.EPOCSTACKSIZE = 0x5000
// Min 128Kb, Max 16Mb
TARGET.EPOCHEAPSIZE = “0x20000 0x1000000”
}

• This way the same .pro file would potentially work in other
environments as well

2
Platform security & signing summary

• Symbian native apps need to be signed. Needed


signing process depends on applications capabilities
– In case Restricted or Manufacturer capabilities are needed
signing needs to happen in Symbian Signed, where a publisher
ID is needed (and you need to have a company to get one)
• CommDD ,DiskAdmin, NetworkControl, MultimediaDD & AllFiles, TCB, DRM
• You should very rarely run into this situation.

• Individuals can publish to Ovi store and get their


application signed in Ovi Store Symbian Signing
Service – free of charge
Packaging your application
Remember the laundry list?
Symbian - minimum laundry list Maemo - minimum laundry list

1. Optimize the app 1. Optimize the app


2. Get an UID
3. Figure out the capabilities
4. Do an icon 2. Do an icon
5. Modify .pro file 3. Modify .pro file
6. Test on several devices 4. Test on the Nokia N900
7. Create a sis file with Nokia Qt 5. Tweak the debian definitions
SDK for Nokia Qt SDK
8. Sign the sis file 6. Create the debian package
9. Take smart installer into use
10. Distribute the embedded pkg 7. Distribute
Publishing Qt apps for maemo
• First create the debian package and test it with
Nokia Qt SDKs maemo tools (MAD) on N900

• The debian package created by Nokia Qt SDK is


a “development” version.

• To make one for publishing a bit of tweaking is


needed. For details see
http://wiki.maemo.org/Packaging_a_Qt_application
Smart Installer for Qt for
Symbian
The opportunity The The solution
A Smart Installer tool that
+100M Symbian devices problem checks whether needed
could run cross-platform Qt Qt libraries need to
applications already during Qt version is available on
be post installed – the device – and if not, it
this year most consumers will handle the installation
might not bother

Details
•Tool called Smart Installer for Symbian devices
•Comes with Nokia Qt SDK
•A small binary to be packaged together with the Qt application targeted for Symbian devices
•The Smart Installer will download OTA the needed Qt & Mobility version to the handset if it is not
already present
Tools & SDKs – Smart Installer

your_app.sis

1
Adm

3
2 Deps
Check

4
Qt
+Webkit
+Mobility

http://tinyurl.com/SmartInstaller
It can be big download…
But as we go forward more
and more devices have Qt
preinstalled

Slides are available in http://www.slideshare.net/pkosonen


Smart installer overview
Embedded.sis

• Scenario is Application.sis Smart installer.sis


– Sign your application
– Create a embedded package that contains
• Your application
• Smart installer
– Publish the embedded package

• Qt for Symbian SDKs qmake supports automatic creation of the


package.
• http://tinyurl.com/SmartInstaller
• http://blogs.forum.nokia.com/blog/ovi-publisher-
alert/2010/08/02/qt-content-qa
Smart installer and Qt versions
• Note; The newest Qt versions may not be available for application
distribution i.e exist in Smart Installer server.
– Once you build an app with Qt the dependency is automagically set to
that version (f.ex 4.7.0).
• If that version is not available for the target device smart installer will fail
– Using what is available in Nokia Qt SDK i.e Qt 4.6.3 is the current
commercial solution
– For checking what is available for distribution :
http://tinyurl.com/SmartInstaller
– If you‟re using mobility or Qt Webkit the dependencies will be created
automagically by qmake and those components will be installed
along with your application
• Smart installer sis file is in „NokiaQtSDK\ Symbian\SDK‟
• Docs in „NokiaQtSDK\ Symbian\SDK\
Nokia_Smart_Installer_for_Symbian_Developers_Guide_v1_0_en.pdf‟
Steps to take smart installer
into usage
• Build the app
– qmake app.pro
– make release-gcce
• Now depending on the signing process you select
1. Ovi Store Symbian Signing Service : use the certificates
you‟ve gotten from them to sign the application and the
embedded package. Test.
2. Symbian signing : sign the application with your published
ID. Send the application for signing. Once you have the signed
application back create the embedded package.
• Let‟s go through the creation of package for
Ovi publishing (using Ovi Store Symbian
Signing Service) next
Creating the package for Ovi
publishing
Planning to publish collindingmice (which I
definitely own and have rights to publish ;)
qmake collidingmice.pro
make release-gcce
make sis QT_SIS_CERTIFICATE=publisherid.cer
QT_SIS_KEY=publisherid.key
make installer_sis
QT_SIS_CERTIFICATE=publisherid.cer
QT_SIS_KEY=publisherid.key
To support Symbian^3
• After you‟ve run qmake patch the .pkg files
(_template.pkg and _installer.pkg)
• Locate the following lines
; Default HW/platform dependencies
[0x101F7961],0,0,0,{"S60ProductID"}
[0x102032BE],0,0,0,{"S60ProductID"}
[0x102752AE],0,0,0,{"S60ProductID"}
[0x1028315F],0,0,0,{"S60ProductID"}
• Add Symbian^3 product ID to the list and save the file
[0x20022E6D] ,0,0,0,{"S60ProductID"}

http://bugreports.qt.nokia.com/browse/QTBUG-13897
Patching continues…
• Locate the UID from installers pkg file
; SIS header: name, uid, version
#{"collidingmice installer"},(0xA000D7CE),1,0,0
• Change the UID to 0x2002CCCF (smart installer
UID)
#{"collidingmice installer"},(0x2002CCCF),1,0,0
• Set the vendor name to both packages
; Localised Vendor name
%{"Vendor"}
; Unique Vendor name
:"Vendor"

• Replace “Vendor” with your Ovi store publisher name


Enabling smart installer
• Video :
file:///C:/presentations/Qt_dev_days_2010/symb
ian/smart_installer_usage_part1.htm
Publishing
Final step in the laundry list
Symbian - minimum laundry list Maemo - minimum laundry list

1. Optimize the app 1. Optimize the app


2. Get an UID
3. Figure out the capabilities
4. Do an icon 2. Do an icon
5. Modify .pro file 3. Modify .pro file
6. Test on several devices 4. Test on the Nokia N900
7. Create a sis file with Nokia Qt 5. Tweak the debian definitions
SDK for Nokia Qt SDK
8. Sign the sis file 6. Create the debian package
9. Take smart installer into use
10. Distribute the embedded pkg 7. Distribute the .deb
Ovi Store: 6 numbers you
should know

2.5
Million
30 91
downloads daily Languages operators

135+ 190+ 90% Mobile consumers


devices countries w/local Store
Our goal is simple
Let‟s make it easy to put your app in the hands of
millions of consumers

Consumers + Developers + Financial


Enablers = $£€¥
Qt apps on Ovi store
• Currently :
– Qt apps can be published for Symbian and Maemo devices using Qt
4.6.3
– Currently 19 devices supported (29th of October 2010):
• Symbian^3: N8-00, C7-00, C6-01, E7-00
– due to recent issue no new content should be published until Store 2.2 (coming in some
weeeks)
• S60 5th Edition devices: X6-00, N97 mini, C6-00, 5800, 5530, 5230, 5228, 5235, N97
• S60 3rd Edition devices: E72, E71, E63, E52, E66
• Maemo/Meego: N900, with PR1.3 and Qt 4.7
– Next ones targeting wk 44 are : 5250, N95 8GB, N95, E72, N82, 5233,
5232, Nuron C5-03
• Early 2011 : Qt 4.7 based application distribution enabled*

* 4.7 apps can be deployed to N900 already once PR 1.3 is available


Publishing Qt apps to Ovi
• Register as an Ovi publisher
– For individuals cost is 1 euro
• For maemo no signing is needed, after testing one can
move on directly to publishing
• For Symbian
– Ovi signing and publishing (which is also free) for individuals
– Or symbian signed (in case of restricted/manufacturer
capabilities) for companies

• http://www.forum.nokia.com/Distribute/Ovi_Store_guidelines.xhtml
• https://publish.ovi.com/register/
Publish to Ovi - registration
• file:///C:/presentations/Qt_dev_days_2010/symb
ian/Register_and_publish.htm
Ovi Store Symbian Signing Service
Registering :

1. Emails publisher support (publishtoovi.support@nokia.com) to start the registration process.


After accepting and signing the terms and conditions…
2. Publisher provides IMEI numbers for up to 5 devices for testing purposes
3. Ovi Publish support sends publisher UIDs, a cert installer, and developer cert/key pair for
testing their app

Publishing:

1. Ovi Publisher packages the SIS file using the UID provided and tests on their device making sure
is tested against Symbian Signed test criteria
2. Ovi Publisher submits their app to the intake tool
3. QA will test the app based on Nokia content and store guideline, specific operator guideline and
Symbian Signed test criteria. If it passes, it will be express signed by Nokia and published into
Ovi Store

http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml
Publishing summary
• Use smart installer for symbian

• Individuals can publish their apps and get the


applications signed using „Ovi Store Symbian
Signing Service‟ –
– registration to Ovi publishing costs 1€, after that it‟s
free of charge.
• We‟re continuously adding new devices to be
supported for Qt application distribution –
currently 19 devices supported.
5. Spicing up the development
environment with platform
specific tools
Tools and SDKs

Nokia Qt SDK Symbian SDK

Qt 4.6.3 Native APIs


Qt Mobility Plug-in APIs
Simulator Documentation
On-device debugging Emulator
Simplified
Limited Symbian SDK + additional tooling in
Maemo 5 SDK (MADDE) For extended Carbide
access

Qt libraries for Symbian


• Framework-only
Enough for many • Documentation
applications
Cases where Symbian SDK is
needed
• Can‟t use all Symbian C++ APIs without Symbian SDK
– Examples : homescreen, …
• Emulator provides improved platform look and feel
– Menus
– UI is more closer to the truth than in Qt simulator
• Communication between multiple processes – Qt app to Qt app
f.ex
• Investigate platform specific painpoints like platform security

• SDK available in http://www.forum.nokia.com/symbian


– You can further spice it up with internal APIs from Symbian foundation
Using platform specific APIs from Qt
Paradigms for platform specific
code
1. Same source files, #ifdef platform specific code
2. Isolate platform specific parts to separate files
to include
3. Write a separate library
Code example 1
same source files, #ifdef platform specific code
#include "signer.h" // Continued…
// Convert signatureBase into a Symbian string:
#ifdef Q_OS_SYMBIAN TPtrC8 basePtr(reinterpret_cast<const
TUint8*>(signatureBase.constData()),
#include <hash.h>
signatureBase.length());
#else
TBuf8<1024> baseString;
#include <openssl/hmac.h>
baseString.Copy(basePtr);
#endif

// Create the raw signature:


QByteArray Signer::sign(QByteArray const
TPtrC8 hashedSignature(hmac->Hash(baseString));
&signingSecret, QByteArray const &signatureBase)
signature = QByteArray(reinterpret_cast<const char
const
*>(hashedSignature.Ptr()),
{
hashedSignature.Length());
QByteArray signature;
#ifdef Q_OS_SYMBIAN CleanupStack::PopAndDestroy(hmac);
// Convert signingSecret into a Symbian string: #else
TPtrC8 keyPtr(reinterpret_cast<const unsigned char *md = new unsigned char[32];
TUint8*>(signingSecret.constData()), unsigned int md_len = 32;
signingSecret.length()); HMAC(EVP_sha1(), signingSecret.constData(), signingSecret.length(),
TBuf8<100> keyVal; reinterpret_cast<const unsigned char *>(signatureBase.constData()),
keyVal.Copy(keyPtr); signatureBase.length(), md, &md_len);
signature = QByteArray(reinterpret_cast<const char *>(md), md_len);
// Initialize the signing-related objects: delete[] md;
CSHA1 *sha1 = CSHA1::NewL(); #endif
CHMAC *hmac = CHMAC::NewL(keyVal, sha1);
CleanupStack::PushL(hmac); return signature.toBase64();
}
Code example 2
Isolate platform specific parts to separate files to include
...
HEADERS += qbluetoothaddressdata.h # public
header
// bluetoothdiscovery.cpp
SOURCES += bluetoothdiscovery.cpp # public
class implementation ...
... #ifdef Q_OS_SYMBIAN
symbian { #include
... ”bluetoothdiscovery_symbian_p.h”
HEADERS += bluetoothdiscovery_symbian_p.h # #else
Symbian private class header
#include ”bluetoothdiscovery_stub_p.h”
SOURCES += bluetoothdiscovery_symbian_p.cpp
# Symbian private class source code // Stub for all other platforms
LIBS += -lesock \ #endif
-lbluetooth
TARGET.CAPABILITY = LocalServices
NetworkServices ReadUserData
UserEnvironment \
WriteUserData
}
Example 3
Write a separate library

• Best resource is
http://developer.symbian.org/wiki/index.php/Using_Qt_and_Symbi
an_C%2B%2B_Together
– Based on http://qt.nokia.com/files/pdf/whitepaper-using-qt-and-
symbian-c-together/view

• Provides a separate library for Symbian that isolates the use of


Bluetooth Symbian APIs and provides a Qt like interface for it

• Other resources:
– For guidance on maemo see the maemo for mobile document in
http://wiki.forum.nokia.com/index.php/Qt_for_Maemo_Developers_Guide
• LibLocation
• LibCityinfo
• MCEDev
• ICD2
Using platform specific Tools with
Qt
Symbian – platform security
demo1

• Run an app in simulator that renames files in


c:\sys\bin.

• Run in Symbian emulator and see what


happens
Video
• file:///C:/presentations/Qt_dev_days_2010/symb
ian/file_delete.htm
Symbian – platsec demo2

• Run an application with no capabilities on


simulator that uses location and network
connectivity.

• Run on symbian emulator and see what


happens.
Video
• file:///C:/presentations/Qt_dev_days_2010/symb
ian/capabilities.htm
Maemo Platform SDK
• Maemo Application SDK (called MAD) is included
in Nokia Qt SDK

• Maemo platform SDK is Scratchbox based


– Hosting OS : Linux
– No Qt Creator integration available.
Summary
• Nokia Qt SDK 1.0 makes it easy to bring Qt
applications to Nokia platforms
– Spicing the SDK up with platform specific features and tools
gives you access to (almost) all the features the devices offers +
additional tooling
– Symbian signing : Once you‟ve wriggled through the signing
jungle once it‟s piece of cake.
• Active install base including Symbian^3: ~100M
– Qt will be preinstalled on all the new Nokia device
• Publishing to Ovi store is free and open for
individuals.
• All these great things can only lead to…

Slides are available in http://www.slideshare.net/pkosonen


Time for you to start thinking
tricky questions while I
prepare for final demo…

Slides are available in http://www.slideshare.net/pkosonen


Still got one great demo
to proof the power of Qt
on Nokia and desktop
platforms
Slides are available in http://www.slideshare.net/pkosonen
Thank you very many!
Pekka.kosonen@nokia.com

Slides are available in http://www.slideshare.net/pkosonen


Publish your app or game to

for
for
consumers in …..
…And enter for a chance to win a share of
$4M in cash, nearly $6M in marketing
prizes, and 500 Nokia Symbian devices –
the biggest single developer competition
ever
Free Qt Hands-on for N8
Workshops
Location Date For more details visit:
http://www.callingallinnovators.com
Silicon Valley Nov 9-10 /10m/events_and_training.aspx

Seattle Nov 15-16


Vancouver Nov 18-19
Miami Dec 2-3
Chicago Dec 6-7
Boulder Dec 9-10
Dallas Dec 15-16
Important Links
• http://www.forum.nokia.com/Develop/Qt/Code_examples/

• http://www.forum.nokia.com/Develop/Qt/

• http://doc.qt.nokia.com/4.6/qmake-platform-notes.html#symbian-platform

• http://qt.gitorious.org/qt/pages/Qt463KnownIssues

• http://qt.gitorious.org/qt/pages/SymbianFAQ

• http://developer.symbian.org/wiki/index.php/Using_Qt_with_Standalone_SDKs

• http://developer.symbian.org/wiki/index.php/Qt_&_Symbian_Platform_Security

• http://developer.symbian.org/wiki/index.php/Using_Qt_and_Symbian_C%2B%2B_Together

• http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470750103,descCd-tableOfContents.html

Das könnte Ihnen auch gefallen