Nokia Qt SDK in Action_SFO_final

Embed Size (px)

Citation preview

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    1/65

    Nokia Qt SDK in ActionQt Developer Days

    2.11.2010 Pekka Kosonen

    Head Of Technology Development, Forum Nokia

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

    http://www.slideshare.net/pkosonenhttp://www.slideshare.net/pkosonen
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    2/65

    Ingredients are:

    1. Overview and demo of Nokia Qt SDK 1.0

    2. Taking your Qt app to Nokia platforms usingNokia Qt SDK The topics that you need to know about

    Symbian and Maemo and how to handlethose.

    3. Publishing to Ovi and Ovi Store SymbianSigning Service

    4. Spicing up the soup with platform SDKs When you might want to tap into

    platform specific SDKs focusing onSymbian.

    Soup of today

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

    http://www.slideshare.net/pkosonenhttp://www.slideshare.net/pkosonen
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    3/65

    Rich told you theopportunity 100 M devices

    I will tell you how you reach

    that install base

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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    4/65

    What we used to haveWhat we have nowWhere we will be

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

    http://www.slideshare.net/pkosonenhttp://www.slideshare.net/pkosonen
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    5/65

    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

    http://www.forum.nokia.com/Qthttp://www.forum.nokia.com/Qt
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    6/65

    Simulator

    Quick launch

    Simulate Qt Mobility project features

    Scripting possibilities

    Skins for different platforms / form-factors

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    7/65

    On-device Debugging

    Debugging host

    Qt Creator

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    8/65

    Switching Target Platforms

    Select Symbian or Maemo target

    Build, deploy and debug

    Supports also switching the target

    to Remote Compiler or

    Symbian Emulator

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    9/65

    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)

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    10/65

    Coding demo 1//geoflickr, using location API, fetch

    //pictures from flickr taken near you.

    //run in simulator, N8 & N900

    Geoflickr simulator, symbian, maemo

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    11/65

    Taking your Qt application to

    Nokia platforms

    The topics to consider

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    12/65

    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

    SDK8. 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 SDK6. Create the debian package

    7. Distribute

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    13/65

    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, atleastif not in WLAN

    Consider the usage of Qt Webkit in your application.

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    14/65

    Application features

    When taking your applicationfrom desktop to smartphones

    dont 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 offeatures.

    You might still want to spice up your

    application with some platform

    specific use cases like home screen.

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    15/65

    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 cant access all data on the device

    http://developer.symbian.org/wiki/index.php/Platform_Security_(Fundamentals_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

    http://developer.symbian.org/wiki/index.php/Platform_Security_(Fundamentals_of_Symbian_C++)http://developer.symbian.org/wiki/index.php/Platform_Security_(Fundamentals_of_Symbian_C++)http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtmlhttp://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtmlhttp://tiny.symbian.org/testcriteriahttp://tiny.symbian.org/testcriteriahttp://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtmlhttp://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtmlhttp://developer.symbian.org/wiki/index.php/Platform_Security_(Fundamentals_of_Symbian_C++)http://developer.symbian.org/wiki/index.php/Platform_Security_(Fundamentals_of_Symbian_C++)
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    16/65

    Capabilities and signingCapability 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

    RestrictedCapabilities CommDD No No Yes No YesDiskAdmin

    NetworkControl

    MultimediaDD

    Device

    ManufacturerCapabilities

    AllFiles No No No No See below

    DRM

    TCB

    Ovi Store SymbianSigning Service

    http://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/Location_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/NetworkServices_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/UserEnvironment_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/ProtServ_Capabilityhttp://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/ReadDeviceData_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/TrustedUI_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/WriteDeviceData_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/DiskAdmin_Capabilityhttp://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/NetworkControl_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/AllFiles_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/DRM_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/TCB_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/TCB_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/DRM_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/AllFiles_Capabilityhttp://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/MultimediaDD_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/NetworkControl_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/DiskAdmin_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/CommDD_Capabilityhttp://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/WriteDeviceData_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/TrustedUI_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/SwEvent_Capabilityhttp://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/SurroundingsDD_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php?title=Capabilities_(Symbian_Signed)/ReadDeviceData_Capability&action=edit&redlink=1http://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/ProtServ_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/PowerMgmt_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/WriteUserData_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/UserEnvironment_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/ReadUserData_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/NetworkServices_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/Location_Capabilityhttp://developer.symbian.org/wiki/index.php/Capabilities_(Symbian_Signed)/LocalServices_Capability
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    17/65

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    18/65

    Figuring out the capabilities

    Majority of Qt applications will manage withthe 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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    19/65

    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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    20/652

    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 16MbTARGET.EPOCHEAPSIZE = 0x20000 0x1000000

    }

    This way the same .pro file would potentially work in otherenvironments as well

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    21/65

    Platform security & signing summary

    Symbian native apps need to be signed. Neededsigning 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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    22/65

    Packaging your application

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    23/65

    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

    SDK8. 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 SDK6. Create the debian package

    7. Distribute

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    24/65

    Publishing Qt apps for maemo

    First create the debian package and test it withNokia Qt SDKs maemo tools (MAD) on N900

    The debian package created by Nokia Qt SDK isa development version.

    To make one for publishing a bit of tweaking is

    needed. For details seehttp://wiki.maemo.org/Packaging_a_Qt_application

    http://wiki.maemo.org/Packaging_a_Qt_applicationhttp://wiki.maemo.org/Packaging_a_Qt_application
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    25/65

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    26/65

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    27/65

    It can be big downloadBut as we go forward more

    and more devices have Qt

    preinstalled

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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    28/65

    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

    http://tinyurl.com/SmartInstallerhttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://blogs.forum.nokia.com/blog/ovi-publisher-alert/2010/08/02/qt-content-qahttp://tinyurl.com/SmartInstallerhttp://tinyurl.com/SmartInstaller
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    29/65

    Smart installer and Qt versions

    Note; The newest Qt versions may not be available for applicationdistribution 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 youre 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

    St t t k t i t ll

    http://tinyurl.com/SmartInstallerhttp://tinyurl.com/SmartInstaller
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    30/65

    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 certificatesyouve 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. Lets go through the creation of package for

    Ovi publishing (using Ovi Store Symbian

    Signing Service) next

    C ti th k f O i

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    31/65

    Creating the package for Ovi

    publishing

    Planning to publish collindingmice (which Idefinitely own and have rights to publish ;)

    qmake collidingmice.pro

    make release-gcce

    make sis QT_SIS_CERTIFICATE=publisherid.cerQT_SIS_KEY=publisherid.key

    make installer_sisQT_SIS_CERTIFICATE=publisherid.cer

    QT_SIS_KEY=publisherid.key

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    32/65

    To support Symbian^3

    After youve 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

    http://bugreports.qt.nokia.com/browse/QTBUG-13897http://bugreports.qt.nokia.com/browse/QTBUG-13897http://bugreports.qt.nokia.com/browse/QTBUG-13897http://bugreports.qt.nokia.com/browse/QTBUG-13897
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    33/65

    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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    34/65

    Enabling smart installer

    Video :file:///C:/presentations/Qt_dev_days_2010/symb

    ian/smart_installer_usage_part1.htm

    http://c/presentations/Qt_dev_days_2010/symbian/smart_installer_usage_part1.htmhttp://c/presentations/Qt_dev_days_2010/symbian/smart_installer_usage_part1.htmhttp://c/presentations/Qt_dev_days_2010/symbian/smart_installer_usage_part1.htmhttp://c/presentations/Qt_dev_days_2010/symbian/smart_installer_usage_part1.htm
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    35/65

    Publishing

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    36/65

    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

    SDK8. 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 SDK6. Create the debian package

    7. Distribute the .deb

    Ovi Store: 6 numbers you

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    37/65

    Ovi Store: 6 numbers you

    should know

    2.5Million

    downloads daily

    30Languages

    91operators

    135+devices 190+countries 90%Mobile consumers

    w/local Store

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    38/65

    Lets make it easy to put your app in the hands of

    millions of consumers

    Consumers $FinancialEnablers

    Developers

    + + =

    Our goal is simple

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    39/65

    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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    40/65

    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/

    http://www.forum.nokia.com/Distribute/Ovi_Store_guidelines.xhtmlhttps://publish.ovi.com/register/country_and_account_typehttps://publish.ovi.com/register/country_and_account_typehttps://publish.ovi.com/register/country_and_account_typehttp://www.forum.nokia.com/Distribute/Ovi_Store_guidelines.xhtmlhttp://www.forum.nokia.com/Distribute/Ovi_Store_guidelines.xhtmlhttp://www.forum.nokia.com/Distribute/Ovi_Store_guidelines.xhtml
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    41/65

    Publish to Ovi - registration

    file:///C:/presentations/Qt_dev_days_2010/symbian/Register_and_publish.htm

    http://c/presentations/Qt_dev_days_2010/symbian/Register_and_publish.htmhttp://c/presentations/Qt_dev_days_2010/symbian/Register_and_publish.htmhttp://c/presentations/Qt_dev_days_2010/symbian/Register_and_publish.htmhttp://c/presentations/Qt_dev_days_2010/symbian/Register_and_publish.htm
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    42/65

    Ovi Store Symbian Signing Service

    Registering :

    1. Emails publisher support ([email protected]) 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 intoOvi Store

    http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml

    mailto:[email protected]://developer.symbian.org/wiki/index.php/Symbian_Signed_Test_Criteria_V4_Wiki_versionhttp://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtmlhttp://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtmlhttp://developer.symbian.org/wiki/index.php/Symbian_Signed_Test_Criteria_V4_Wiki_versionhttp://developer.symbian.org/wiki/index.php/Symbian_Signed_Test_Criteria_V4_Wiki_versionhttp://developer.symbian.org/wiki/index.php/Symbian_Signed_Test_Criteria_V4_Wiki_versionmailto:[email protected]
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    43/65

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    44/65

    5. Spicing up the development

    environment with platformspecific tools

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    45/65

    Tools and SDKs

    Symbian SDK

    Native APIsPlug-in APIsDocumentationEmulator

    + additional tooling inCarbide

    Qt libraries for Symbian

    Framework-only Documentation

    Qt 4.6.3Qt MobilitySimulatorOn-device debuggingSimplifiedLimited Symbian SDKMaemo 5 SDK (MADDE)

    Nokia Qt SDK

    Enough for manyapplications

    For extendedaccess

    Cases where Symbian SDK is

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    46/65

    Cases where Symbian SDK is

    needed

    Cant 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 appf.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

    http://www.forum.nokia.com/symbianhttp://www.forum.nokia.com/symbian
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    47/65

    Using platform specific APIs from Qt

    Paradigms for platform specific

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    48/65

    Paradigms for platform specific

    code

    1. Same source files, #ifdef platform specific code2. Isolate platform specific parts to separate files

    to include

    3. Write a separate library

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    49/65

    Code example 1

    #include "signer.h"

    #ifdef Q_OS_SYMBIAN

    #include

    #else

    #include

    #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(signingSecret.constData()),

    signingSecret.length());

    TBuf8 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(signatureBase.constData()),

    signatureBase.length());

    TBuf8 baseString;

    baseString.Copy(basePtr);

    // Create the raw signature:

    TPtrC8 hashedSignature(hmac->Hash(baseString));

    signature = QByteArray(reinterpret_cast(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(signatureBase.constData()),signatureBase.length(), md, &md_len);

    signature = QByteArray(reinterpret_cast(md), md_len);

    delete[] md;

    #endif

    return signature.toBase64();

    }

    same source files, #ifdef platform specific code

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    50/65

    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 = LocalServicesNetworkServices 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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    51/65

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    52/65

    Using platform specific Tools with

    Qt

    Symbian platform security

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    53/65

    Symbian platform security

    demo1

    Run an app in simulator that renames files in

    c:\sys\bin.

    Run in Symbian emulator and see what

    happens

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    54/65

    Video

    file:///C:/presentations/Qt_dev_days_2010/symbian/file_delete.htm

    Symbian platsec demo2

    http://c/presentations/Qt_dev_days_2010/symbian/file_delete.htmhttp://c/presentations/Qt_dev_days_2010/symbian/file_delete.htmhttp://c/presentations/Qt_dev_days_2010/symbian/file_delete.htmhttp://c/presentations/Qt_dev_days_2010/symbian/file_delete.htm
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    55/65

    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.

    id

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    56/65

    Video

    file:///C:/presentations/Qt_dev_days_2010/symbian/capabilities.htm

    l f

    http://c/presentations/Qt_dev_days_2010/symbian/capabilities.htmhttp://c/presentations/Qt_dev_days_2010/symbian/capabilities.htmhttp://c/presentations/Qt_dev_days_2010/symbian/capabilities.htmhttp://c/presentations/Qt_dev_days_2010/symbian/capabilities.htm
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    57/65

    Maemo Platform SDK

    Maemo Application SDK (called MAD) is includedin Nokia Qt SDK

    Maemo platform SDK is Scratchbox based

    Hosting OS : Linux

    No Qt Creator integration available.

    S

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    58/65

    Summary

    Nokia Qt SDK 1.0 makes it easy to bring Qtapplications 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 youve wriggled through the signingjungle once its 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 forindividuals.

    All these great things can only lead to

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

    http://www.slideshare.net/pkosonenhttp://www.slideshare.net/pkosonen
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    59/65

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    60/65

    Still got one great demoto proof the power of Qt

    on Nokia and desktop

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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    61/65

    Thank you very [email protected]

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

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    62/65

    Publish your app or game to

    for for

    consumers in

    ..

    http://qt.nokia.com/
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    63/65

    And enter for a chance to win a share of

    $4M in cash, nearly $6M in marketingprizes, and 500 Nokia Symbian devices

    the biggest single developer competitionever

    Free Qt Hands-on for N8

  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    64/65

    Free Qt Hands on for N8

    Workshops

    Location DateSilicon 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.callingallinnovators.com/10m/events_and_training.aspxhttp://www.callingallinnovators.com/10m/events_and_training.aspxhttp://www.callingallinnovators.com/10m/events_and_training.aspxhttp://www.callingallinnovators.com/10m/events_and_training.aspx
  • 8/6/2019 Nokia Qt SDK in Action_SFO_final

    65/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

    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.htmlhttp://qt.gitorious.org/qt/pages/Qt463KnownIssueshttp://qt.gitorious.org/qt/pages/SymbianFAQhttp://developer.symbian.org/wiki/index.php/Using_Qt_with_Standalone_SDKshttp://developer.symbian.org/wiki/index.php/Qt_&_Symbian_Platform_Securityhttp://developer.symbian.org/wiki/index.php/Using_Qt_and_Symbian_C++_Togetherhttp://www.wiley.com/WileyCDA/WileyTitle/productCd-0470750103,descCd-tableOfContents.htmlhttp://www.wiley.com/WileyCDA/WileyTitle/productCd-0470750103,descCd-tableOfContents.htmlhttp://www.wiley.com/WileyCDA/WileyTitle/productCd-0470750103,descCd-tableOfContents.htmlhttp://www.wiley.com/WileyCDA/WileyTitle/productCd-0470750103,descCd-tableOfContents.htmlhttp://www.wiley.com/WileyCDA/WileyTitle/productCd-0470750103,descCd-tableOfContents.htmlhttp://www.wiley.com/WileyCDA/WileyTitle/productCd-0470750103,descCd-tableOfContents.htmlhttp://developer.symbian.org/wiki/index.php/Using_Qt_and_Symbian_C++_Togetherhttp://developer.symbian.org/wiki/index.php/Qt_&_Symbian_Platform_Securityhttp://developer.symbian.org/wiki/index.php/Using_Qt_with_Standalone_SDKshttp://qt.gitorious.org/qt/pages/SymbianFAQhttp://qt.gitorious.org/qt/pages/Qt463KnownIssueshttp://doc.qt.nokia.com/4.6/qmake-platform-notes.htmlhttp://doc.qt.nokia.com/4.6/qmake-platform-notes.htmlhttp://doc.qt.nokia.com/4.6/qmake-platform-notes.htmlhttp://doc.qt.nokia.com/4.6/qmake-platform-notes.htmlhttp://doc.qt.nokia.com/4.6/qmake-platform-notes.htmlhttp://doc.qt.nokia.com/4.6/qmake-platform-notes.htmlhttp://doc.qt.nokia.com/4.6/qmake-platform-notes.htmlhttp://www.forum.nokia.com/Develop/Qt/http://www.forum.nokia.com/Develop/Qt/Code_examples/