SlideShare una empresa de Scribd logo
1 de 65
Descargar para leer sin conexión
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
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.
Soup of today
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 used to haveWhat we have nowWhere we will be
Slides are available in http://www.slideshare.net/pkosonen
Now - Nokia Qt SDK 1.0 overview
Simulate. Fast, easy to use and
lightweight simulator.
Install. All in just one package.
Easy to customize and update.
Install Develop Simulate Deploy*
Create. Qt Creator - Easy to use IDE
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
1. Optimize the app
2. Get an UID
3. Figure out the capabilities
4. Do an icon
5. Modify .pro file
6. Test on several devices
7. Create a sis file with Nokia Qt
SDK
8. Sign the sis file
9. Take smart installer into use
10. Distribute the embedded pkg
Maemo - minimum laundry list
1. Optimize the app
2. Do an icon
3. Modify .pro file
4. Test on the Nokia N900
5. Tweak the debian files for
Nokia Qt SDK
6. Create the debian package
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 and signing
Capability Group Capability Name Self-Signed Open Signed
Online
Open Signed
Offline
Express Signed Certified
Signed
User Capabilities LocalServices Yes, with user
confirmation at
install time
Yes Yes Yes Yes
Location
NetworkServices
ReadUserData
UserEnvironment
WriteUserData
System
Capabilities
PowerMgmt No Yes Yes Yes Yes
ProtServ
ReadDeviceData
SurroundingsDD
SwEvent
TrustedUI
WriteDeviceData
Restricted
Capabilities
CommDD No No Yes No Yes
DiskAdmin
NetworkControl
MultimediaDD
Device
Manufacturer
Capabilities
AllFiles No No No No See below
DRM
TCB
Ovi Store Symbian
Signing Service
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:NokiaQtSDKExamples4.6animationanimatedtiles
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
2
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
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
1. Optimize the app
2. Get an UID
3. Figure out the capabilities
4. Do an icon
5. Modify .pro file
6. Test on several devices
7. Create a sis file with Nokia Qt
SDK
8. Sign the sis file
9. Take smart installer into use
10. Distribute the embedded pkg
Maemo - minimum laundry list
1. Optimize the app
2. Do an icon
3. Modify .pro file
4. Test on the Nokia N900
5. Tweak the debian definitions
for Nokia Qt SDK
6. Create the debian package
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
+100M Symbian devices
could run cross-platform Qt
applications already during
this year
The
problem
Qt libraries need to
be post installed –
most consumers
might not bother
The solution
A Smart Installer tool that
checks whether needed
Qt version is available on
the device – and if not, it
will handle the installation
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
2
Check
3
Deps
4
Qt
+Webkit
+Mobility
1
Adm
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
• Scenario is
– 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
Embedded.sis
Smart installer.sisApplication.sis
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 SymbianSDK‟
• Docs in „NokiaQtSDK SymbianSDK
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
1. Optimize the app
2. Get an UID
3. Figure out the capabilities
4. Do an icon
5. Modify .pro file
6. Test on several devices
7. Create a sis file with Nokia Qt
SDK
8. Sign the sis file
9. Take smart installer into use
10. Distribute the embedded pkg
Maemo - minimum laundry list
1. Optimize the app
2. Do an icon
3. Modify .pro file
4. Test on the Nokia N900
5. Tweak the debian definitions
for Nokia Qt SDK
6. Create the debian package
7. Distribute the .deb
Ovi Store: 6 numbers you
should know
2.5Million
downloads daily
30
Languages
91
operators
135+
devices
190+
countries
90%Mobile consumers
w/local Store
Let‟s make it easy to put your app in the hands of
millions of consumers
Consumers $£€¥
Financial
Enablers
Developers+ + =
Our goal is simple
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
Symbian SDK
Native APIs
Plug-in APIs
Documentation
Emulator
+ additional tooling in
Carbide
Qt libraries for Symbian
• Framework-only
• Documentation
Qt 4.6.3
Qt Mobility
Simulator
On-device debugging
Simplified
Limited Symbian SDK
Maemo 5 SDK (MADDE)
Nokia Qt SDK
Enough for many
applications
For extended
access
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
#include "signer.h"
#ifdef Q_OS_SYMBIAN
#include <hash.h>
#else
#include <openssl/hmac.h>
#endif
QByteArray Signer::sign(QByteArray const
&signingSecret, QByteArray const &signatureBase)
const
{
QByteArray signature;
#ifdef Q_OS_SYMBIAN
// Convert signingSecret into a Symbian string:
TPtrC8 keyPtr(reinterpret_cast<const
TUint8*>(signingSecret.constData()),
signingSecret.length());
TBuf8<100> keyVal;
keyVal.Copy(keyPtr);
// Initialize the signing-related objects:
CSHA1 *sha1 = CSHA1::NewL();
CHMAC *hmac = CHMAC::NewL(keyVal, sha1);
CleanupStack::PushL(hmac);
// Continued…
// Convert signatureBase into a Symbian string:
TPtrC8 basePtr(reinterpret_cast<const
TUint8*>(signatureBase.constData()),
signatureBase.length());
TBuf8<1024> baseString;
baseString.Copy(basePtr);
// Create the raw signature:
TPtrC8 hashedSignature(hmac->Hash(baseString));
signature = QByteArray(reinterpret_cast<const char
*>(hashedSignature.Ptr()),
hashedSignature.Length());
CleanupStack::PopAndDestroy(hmac);
#else
unsigned char *md = new unsigned char[32];
unsigned int md_len = 32;
HMAC(EVP_sha1(), signingSecret.constData(), signingSecret.length(),
reinterpret_cast<const unsigned char *>(signatureBase.constData()),
signatureBase.length(), md, &md_len);
signature = QByteArray(reinterpret_cast<const char *>(md), md_len);
delete[] md;
#endif
return signature.toBase64();
}
same source files, #ifdef platform specific code
Code example 2
...
HEADERS += qbluetoothaddressdata.h # public
header
SOURCES += bluetoothdiscovery.cpp # public
class implementation
...
symbian {
...
HEADERS += bluetoothdiscovery_symbian_p.h #
Symbian private class header
SOURCES += bluetoothdiscovery_symbian_p.cpp
# Symbian private class source code
LIBS += -lesock 
-lbluetooth
TARGET.CAPABILITY = LocalServices
NetworkServices ReadUserData
UserEnvironment 
WriteUserData
}
// bluetoothdiscovery.cpp
...
#ifdef Q_OS_SYMBIAN
#include
”bluetoothdiscovery_symbian_p.h”
#else
#include ”bluetoothdiscovery_stub_p.h”
// Stub for all other platforms
#endif
Isolate platform specific parts to separate files to include
Example 3
• 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
Write a separate library
Using platform specific Tools with
Qt
Symbian – platform security
demo1
• Run an app in simulator that renames files in
c:sysbin.
• 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
Slides are available in http://www.slideshare.net/pkosonen
Time for you to start thinking
tricky questions while I
prepare for final demo…
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
Silicon Valley Nov 9-10
Seattle Nov 15-16
Vancouver Nov 18-19
Miami Dec 2-3
Chicago Dec 6-7
Boulder Dec 9-10
Dallas Dec 15-16
For more details visit:
http://www.callingallinnovators.com
/10m/events_and_training.aspx
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

Más contenido relacionado

Más de Nokia

Zalando at Columbia Road_shared
Zalando at Columbia Road_sharedZalando at Columbia Road_shared
Zalando at Columbia Road_sharedNokia
 
Radical Agility with Autonomous Teams and Microservices - Pekka Kosonen - 080...
Radical Agility with Autonomous Teams and Microservices - Pekka Kosonen - 080...Radical Agility with Autonomous Teams and Microservices - Pekka Kosonen - 080...
Radical Agility with Autonomous Teams and Microservices - Pekka Kosonen - 080...Nokia
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Nokia
 
Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009Nokia
 
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Nokia
 
Qt - for stack overflow developer conference
Qt - for stack overflow developer conferenceQt - for stack overflow developer conference
Qt - for stack overflow developer conferenceNokia
 
Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)Nokia
 
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn StrippedQt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn StrippedNokia
 
Qt everywhere
Qt everywhereQt everywhere
Qt everywhereNokia
 
S60 - Over the air
S60 - Over the airS60 - Over the air
S60 - Over the airNokia
 

Más de Nokia (10)

Zalando at Columbia Road_shared
Zalando at Columbia Road_sharedZalando at Columbia Road_shared
Zalando at Columbia Road_shared
 
Radical Agility with Autonomous Teams and Microservices - Pekka Kosonen - 080...
Radical Agility with Autonomous Teams and Microservices - Pekka Kosonen - 080...Radical Agility with Autonomous Teams and Microservices - Pekka Kosonen - 080...
Radical Agility with Autonomous Teams and Microservices - Pekka Kosonen - 080...
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
 
Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009
 
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
 
Qt - for stack overflow developer conference
Qt - for stack overflow developer conferenceQt - for stack overflow developer conference
Qt - for stack overflow developer conference
 
Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)
 
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn StrippedQt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn Stripped
 
Qt everywhere
Qt everywhereQt everywhere
Qt everywhere
 
S60 - Over the air
S60 - Over the airS60 - Over the air
S60 - Over the air
 

Último

Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 

Último (20)

Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 

Nokia Qt SDK in Action

  • 1. 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
  • 2. 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. Soup of today Slides are available in http://www.slideshare.net/pkosonen
  • 3. 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
  • 4. What we used to haveWhat we have nowWhere we will be Slides are available in http://www.slideshare.net/pkosonen
  • 5. Now - Nokia Qt SDK 1.0 overview Simulate. Fast, easy to use and lightweight simulator. Install. All in just one package. Easy to customize and update. Install Develop Simulate Deploy* Create. Qt Creator - Easy to use IDE Update http://www.forum.nokia.com/Qt
  • 6. Simulator • Quick launch • Simulate Qt Mobility project features • Scripting possibilities • Skins for different platforms / form-factors
  • 8. Switching Target Platforms • Select Symbian or Maemo target • Build, deploy and debug • Supports also switching the target to Remote Compiler or Symbian Emulator
  • 9. 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)
  • 10. Coding demo 1 //geoflickr, using location API, fetch //pictures from flickr taken near you. //run in simulator, N8 & N900 Geoflickr – simulator, symbian, maemo
  • 11. Taking your Qt application to Nokia platforms The topics to consider
  • 12. Taking your app to Nokia platforms – the laundry list Symbian - minimum laundry list 1. Optimize the app 2. Get an UID 3. Figure out the capabilities 4. Do an icon 5. Modify .pro file 6. Test on several devices 7. Create a sis file with Nokia Qt SDK 8. Sign the sis file 9. Take smart installer into use 10. Distribute the embedded pkg Maemo - minimum laundry list 1. Optimize the app 2. Do an icon 3. Modify .pro file 4. Test on the Nokia N900 5. Tweak the debian files for Nokia Qt SDK 6. Create the debian package 7. Distribute
  • 13. 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.
  • 14. 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.
  • 15. 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
  • 16. Capabilities and signing Capability Group Capability Name Self-Signed Open Signed Online Open Signed Offline Express Signed Certified Signed User Capabilities LocalServices Yes, with user confirmation at install time Yes Yes Yes Yes Location NetworkServices ReadUserData UserEnvironment WriteUserData System Capabilities PowerMgmt No Yes Yes Yes Yes ProtServ ReadDeviceData SurroundingsDD SwEvent TrustedUI WriteDeviceData Restricted Capabilities CommDD No No Yes No Yes DiskAdmin NetworkControl MultimediaDD Device Manufacturer Capabilities AllFiles No No No No See below DRM TCB Ovi Store Symbian Signing Service
  • 17. 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
  • 18. 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…
  • 19. Icon • Use SVG-T • See examples, f.ex „C:NokiaQtSDKExamples4.6animationanimatedtiles 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
  • 20. 2 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
  • 21. 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
  • 23. Remember the laundry list? Symbian - minimum laundry list 1. Optimize the app 2. Get an UID 3. Figure out the capabilities 4. Do an icon 5. Modify .pro file 6. Test on several devices 7. Create a sis file with Nokia Qt SDK 8. Sign the sis file 9. Take smart installer into use 10. Distribute the embedded pkg Maemo - minimum laundry list 1. Optimize the app 2. Do an icon 3. Modify .pro file 4. Test on the Nokia N900 5. Tweak the debian definitions for Nokia Qt SDK 6. Create the debian package 7. Distribute
  • 24. 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
  • 25. Smart Installer for Qt for Symbian The opportunity +100M Symbian devices could run cross-platform Qt applications already during this year The problem Qt libraries need to be post installed – most consumers might not bother The solution A Smart Installer tool that checks whether needed Qt version is available on the device – and if not, it will handle the installation 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
  • 26. Tools & SDKs – Smart Installer your_app.sis 2 Check 3 Deps 4 Qt +Webkit +Mobility 1 Adm http://tinyurl.com/SmartInstaller
  • 27. 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
  • 28. Smart installer overview • Scenario is – 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 Embedded.sis Smart installer.sisApplication.sis
  • 29. 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 SymbianSDK‟ • Docs in „NokiaQtSDK SymbianSDK Nokia_Smart_Installer_for_Symbian_Developers_Guide_v1_0_en.pdf‟
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. Enabling smart installer • Video : file:///C:/presentations/Qt_dev_days_2010/symb ian/smart_installer_usage_part1.htm
  • 36. Final step in the laundry list Symbian - minimum laundry list 1. Optimize the app 2. Get an UID 3. Figure out the capabilities 4. Do an icon 5. Modify .pro file 6. Test on several devices 7. Create a sis file with Nokia Qt SDK 8. Sign the sis file 9. Take smart installer into use 10. Distribute the embedded pkg Maemo - minimum laundry list 1. Optimize the app 2. Do an icon 3. Modify .pro file 4. Test on the Nokia N900 5. Tweak the debian definitions for Nokia Qt SDK 6. Create the debian package 7. Distribute the .deb
  • 37. Ovi Store: 6 numbers you should know 2.5Million downloads daily 30 Languages 91 operators 135+ devices 190+ countries 90%Mobile consumers w/local Store
  • 38. Let‟s make it easy to put your app in the hands of millions of consumers Consumers $£€¥ Financial Enablers Developers+ + = Our goal is simple
  • 39. 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
  • 40. 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/
  • 41. Publish to Ovi - registration • file:///C:/presentations/Qt_dev_days_2010/symb ian/Register_and_publish.htm
  • 42. 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
  • 43. 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.
  • 44. 5. Spicing up the development environment with platform specific tools
  • 45. Tools and SDKs Symbian SDK Native APIs Plug-in APIs Documentation Emulator + additional tooling in Carbide Qt libraries for Symbian • Framework-only • Documentation Qt 4.6.3 Qt Mobility Simulator On-device debugging Simplified Limited Symbian SDK Maemo 5 SDK (MADDE) Nokia Qt SDK Enough for many applications For extended access
  • 46. 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
  • 47. Using platform specific APIs from Qt
  • 48. 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
  • 49. Code example 1 #include "signer.h" #ifdef Q_OS_SYMBIAN #include <hash.h> #else #include <openssl/hmac.h> #endif QByteArray Signer::sign(QByteArray const &signingSecret, QByteArray const &signatureBase) const { QByteArray signature; #ifdef Q_OS_SYMBIAN // Convert signingSecret into a Symbian string: TPtrC8 keyPtr(reinterpret_cast<const TUint8*>(signingSecret.constData()), signingSecret.length()); TBuf8<100> keyVal; keyVal.Copy(keyPtr); // Initialize the signing-related objects: CSHA1 *sha1 = CSHA1::NewL(); CHMAC *hmac = CHMAC::NewL(keyVal, sha1); CleanupStack::PushL(hmac); // Continued… // Convert signatureBase into a Symbian string: TPtrC8 basePtr(reinterpret_cast<const TUint8*>(signatureBase.constData()), signatureBase.length()); TBuf8<1024> baseString; baseString.Copy(basePtr); // Create the raw signature: TPtrC8 hashedSignature(hmac->Hash(baseString)); signature = QByteArray(reinterpret_cast<const char *>(hashedSignature.Ptr()), hashedSignature.Length()); CleanupStack::PopAndDestroy(hmac); #else unsigned char *md = new unsigned char[32]; unsigned int md_len = 32; HMAC(EVP_sha1(), signingSecret.constData(), signingSecret.length(), reinterpret_cast<const unsigned char *>(signatureBase.constData()), signatureBase.length(), md, &md_len); signature = QByteArray(reinterpret_cast<const char *>(md), md_len); delete[] md; #endif return signature.toBase64(); } same source files, #ifdef platform specific code
  • 50. Code example 2 ... HEADERS += qbluetoothaddressdata.h # public header SOURCES += bluetoothdiscovery.cpp # public class implementation ... symbian { ... HEADERS += bluetoothdiscovery_symbian_p.h # Symbian private class header SOURCES += bluetoothdiscovery_symbian_p.cpp # Symbian private class source code LIBS += -lesock -lbluetooth TARGET.CAPABILITY = LocalServices NetworkServices ReadUserData UserEnvironment WriteUserData } // bluetoothdiscovery.cpp ... #ifdef Q_OS_SYMBIAN #include ”bluetoothdiscovery_symbian_p.h” #else #include ”bluetoothdiscovery_stub_p.h” // Stub for all other platforms #endif Isolate platform specific parts to separate files to include
  • 51. Example 3 • 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 Write a separate library
  • 52. Using platform specific Tools with Qt
  • 53. Symbian – platform security demo1 • Run an app in simulator that renames files in c:sysbin. • Run in Symbian emulator and see what happens
  • 55. 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.
  • 57. 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.
  • 58. 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
  • 59. Slides are available in http://www.slideshare.net/pkosonen Time for you to start thinking tricky questions while I prepare for final demo…
  • 60. 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
  • 61. Thank you very many! Pekka.kosonen@nokia.com Slides are available in http://www.slideshare.net/pkosonen
  • 62. Publish your app or game to for for consumers in …..
  • 63. …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
  • 64. Free Qt Hands-on for N8 Workshops Location Date Silicon Valley Nov 9-10 Seattle Nov 15-16 Vancouver Nov 18-19 Miami Dec 2-3 Chicago Dec 6-7 Boulder Dec 9-10 Dallas Dec 15-16 For more details visit: http://www.callingallinnovators.com /10m/events_and_training.aspx
  • 65. 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