SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
Nokia Qt SDK in Action
          Qt Developer Days 2010
         12.10.2010 Pekka Kosonen




  Slides are available in http://www.slideshare.net/pkosonen
Soup of today
Ingredients are:
1.   Overview and demo of Nokia Qt SDK 1.0

2.   Taking your Qt app to Nokia platforms using
     Nokia Qt SDK
     •   The topics that you need to know about
         Symbian and Maemo and how to handle
         those.

3.   Publishing to Ovi and Ovi Store Symbian
     Signing Service

4.   Spicing up the soup with platform SDKs
     •   When you might want to tap into
         platform specific SDKs – focusing on
         Symbian.



             Slides are available in http://www.slideshare.net/pkosonen
have now
Where we will be have
What we used to




    Slides are available in http://www.slideshare.net/pkosonen
Now - Nokia Qt SDK 1.0 overview
               Install. All in just one package.
               Easy to customize and update.




                                                     Simulate. Fast, easy to use and
                                                     lightweight simulator.

                                      Create. Qt Creator - Easy to use IDE



     Install          Develop              Simulate             Deploy*
Simulator

• Quick launch

• Simulate Qt Mobility project features

• Scripting possibilities

• Skins for different platforms / form-factors
On-device Debugging

           Debugging host
             Qt Creator
Switching Target Platforms


• Select Symbian or Maemo target
• Build, deploy and debug

• Supports also switching the target
  to Remote Compiler or
  Symbian Emulator
Remote compiler

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

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




Geoflickr – simulator, symbian, maemo
Taking your Qt application to
Nokia platforms



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

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

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

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

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

                      ReadUserData
                     UserEnvironment

                      WriteUserData

     System            PowerMgmt             No              Yes           Yes            Yes            Yes
   Capabilities         ProtServ
                     ReadDeviceData

                     SurroundingsDD

                        SwEvent
                        TrustedUI
                     WriteDeviceData

    Restricted          CommDD               No              No            Yes            No             Yes
   Capabilities        DiskAdmin
                     NetworkControl

                      MultimediaDD
     Device              AllFiles            No              No            No             No          See below
  Manufacturer            DRM
   Capabilities            TCB
UID for Symbian applications
• Each process has a unique identifier (UID)
• Can be obtained from Ovi Store Symbian
  Signing Service (or Symbian signing)
• No cost included
• Defined in the applications .pro file
   symbian {
     #application UID here
     TARGET.UID3 = 0x21234567
   }
• For testing you can use any UID starting with 0xE
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
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
             // Qt app stack typically larger than 8kb
           TARGET.EPOCSTACKSIZE = 0x5000
           // Min 128Kb, Max 16Mb
           TARGET.EPOCHEAPSIZE = “0x20000 0x1000000”
           }

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



2
Platform security & signing summary

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

• Individuals can publish to Ovi store and get their
  application signed in Ovi Store Symbian Signing
  Service – free of charge
Packaging your application
Remember the laundry list?
Symbian - minimum laundry list        Maemo - minimum laundry list

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

• The debian package created by Nokia Qt SDK is
  a “development” version.

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




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

your_app.sis


                                     1
                                    Adm




                                      3
           2                         Deps
         Check



                                      4
                                      Qt
                                    +Webkit
                                    +Mobility




                 http://tinyurl.com/SmartInstaller
Smart installer overview
                                               Embedded.sis

• Scenario is                       Application.sis   Smart installer.sis
   – Sign your application
   – Create a embedded package that contains
       • Your application
       • Smart installer
   – Publish the embedded package


• Qt for Symbian SDKs qmake supports automatic creation of the
  package.
• http://tinyurl.com/SmartInstaller
• http://blogs.forum.nokia.com/blog/ovi-publisher-
  alert/2010/08/02/qt-content-qa
smart installer and Qt versions
• Note; The newest Qt versions may not be available for application
  distribution i.e exist in Smart Installer server.
   – Once you build an app with Qt the dependency is automagically set to
     that version (f.ex 4.7.0).
       • If that version is not available for the target device smart installer will fail
   – Using what is available in Nokia Qt SDK i.e Qt 4.6.3 is the current
     commercial solution
   – For checking what is available for distribution :
     http://tinyurl.com/SmartInstaller
   – If you‟re using mobility or Qt Webkit the dependencies will be created
     automagically by qmake and those components will be installed
     along with your application
• Smart installer sis file is in „NokiaQtSDK 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
   #{"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
Let‟s have a look at how it‟s done

• TODO add the video here
Publishing
Final step in the laundry list
Symbian - minimum laundry list        Maemo - minimum laundry list

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

       2.5
         Million
                         30            91
     downloads daily   Languages    operators




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



 Consumers   +   Developers   +   Financial
                                  Enablers    =   $£€¥
Qt apps on Ovi store
    • Currently :
        – Qt apps can be published for Symbian and Maemo devices
          using Qt 4.6.3
        – Currently 8 devices on the market (N8, X6, N97 mini, E6, 5800,
          5530, 5230 and N900) are supported.
    • Early 2011
        – Targeting +20 devices (by end of this year) that will
          cover the most popular devices causing downloads
          from the store.
        – 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
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



                          www.forum.nokia.com/Distribute/
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 continuosly adding new devices to be
  supported for Qt application distribution –
  currently 8 devices supported.
5. Spicing up the development
environment with platform
specific tools
Tools and SDKs

  Nokia Qt SDK                          Symbian SDK

   Qt 4.6.3                              Native APIs
   Qt Mobility                           Plug-in APIs
   Simulator                             Documentation
   On-device debugging                   Emulator
   Simplified
   Symbian SDK                           + additional tooling in
                         For extended       Carbide
                            access

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

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

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

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


• Provides a separate library for Symbian that isolates the use of
  Bluetooth Symbian APIs and provides a Qt like interface for it

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

• Run an app in simulator that renames files in
  c:sysbin. Works just fine.

• Run in Symbian emulator and see what
  happens
Symbian – platsec demo2


• Run an application with no capabilities on
  simulator that uses location and network
  connectivity. Works just fine.

• Run on symbian emulator and see what
  happens.
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 SDKs gives you
    access to (almost) all the features the devices offers +
    additional tooling
• Once you‟ve wriggled through the signing
  jungle once it‟s piece of cake.
• Publishing to Ovi store is in majority of cases
  free and open for individuals.
• All these great things can only lead to…

      Slides are available in http://www.slideshare.net/pkosonen
Time for you to start thinking
tricky questions while I
prepare for final demo…




   Slides are available in http://www.slideshare.net/pkosonen
Still got one great demo
to proof the power of Qt
on Nokia and desktop
platforms
  Slides are available in http://www.slideshare.net/pkosonen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.DALEZ
 
Jure Sustersic Monetization through Ovi Services
Jure Sustersic Monetization through Ovi ServicesJure Sustersic Monetization through Ovi Services
Jure Sustersic Monetization through Ovi ServicesNokiaAppForum
 
2. the aegis story building an accessible application
2. the aegis story   building an accessible application2. the aegis story   building an accessible application
2. the aegis story building an accessible applicationAEGIS-ACCESSIBLE Projects
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbianaccount inactive
 
S60 Web Runtime - Web2.0 Expo Europe 2008
S60 Web Runtime - Web2.0 Expo Europe 2008S60 Web Runtime - Web2.0 Expo Europe 2008
S60 Web Runtime - Web2.0 Expo Europe 2008petrosoininen
 
Android Beyond The Phone
Android Beyond The PhoneAndroid Beyond The Phone
Android Beyond The PhoneMarko Gargenta
 
Using Qt to Build Mobile Applications Featuring Social Networking and Monetiz...
Using Qt to Build Mobile Applications Featuring Social Networking and Monetiz...Using Qt to Build Mobile Applications Featuring Social Networking and Monetiz...
Using Qt to Build Mobile Applications Featuring Social Networking and Monetiz...account inactive
 
Nokia Developer Offering Update
Nokia Developer Offering UpdateNokia Developer Offering Update
Nokia Developer Offering UpdateJanaina Pilomia
 
Meego의 현재와 미래(2)
Meego의 현재와 미래(2)Meego의 현재와 미래(2)
Meego의 현재와 미래(2)mosaicnet
 
2011 android
2011 android2011 android
2011 androidvpedapolu
 
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Michael Kozloff
 
Droid con 2012 bangalore v2.0
Droid con 2012   bangalore v2.0Droid con 2012   bangalore v2.0
Droid con 2012 bangalore v2.0Premchander Rao
 
Hamish Willee
Hamish WilleeHamish Willee
Hamish Willeefndc
 
Smartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone BudgetSmartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone BudgetGail Frederick
 
The More Capable Series 40 Java Platform
The More Capable Series 40 Java PlatformThe More Capable Series 40 Java Platform
The More Capable Series 40 Java PlatformGorkem Ercan
 

Was ist angesagt? (20)

Software development with qt
Software development with qtSoftware development with qt
Software development with qt
 
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
 
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
 
Jure Sustersic Monetization through Ovi Services
Jure Sustersic Monetization through Ovi ServicesJure Sustersic Monetization through Ovi Services
Jure Sustersic Monetization through Ovi Services
 
2. the aegis story building an accessible application
2. the aegis story   building an accessible application2. the aegis story   building an accessible application
2. the aegis story building an accessible application
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
 
S60 Web Runtime - Web2.0 Expo Europe 2008
S60 Web Runtime - Web2.0 Expo Europe 2008S60 Web Runtime - Web2.0 Expo Europe 2008
S60 Web Runtime - Web2.0 Expo Europe 2008
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Android Beyond The Phone
Android Beyond The PhoneAndroid Beyond The Phone
Android Beyond The Phone
 
Using Qt to Build Mobile Applications Featuring Social Networking and Monetiz...
Using Qt to Build Mobile Applications Featuring Social Networking and Monetiz...Using Qt to Build Mobile Applications Featuring Social Networking and Monetiz...
Using Qt to Build Mobile Applications Featuring Social Networking and Monetiz...
 
Nokia Developer Offering Update
Nokia Developer Offering UpdateNokia Developer Offering Update
Nokia Developer Offering Update
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foo
 
Meego의 현재와 미래(2)
Meego의 현재와 미래(2)Meego의 현재와 미래(2)
Meego의 현재와 미래(2)
 
2011 android
2011 android2011 android
2011 android
 
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
 
Droid con 2012 bangalore v2.0
Droid con 2012   bangalore v2.0Droid con 2012   bangalore v2.0
Droid con 2012 bangalore v2.0
 
Hamish Willee
Hamish WilleeHamish Willee
Hamish Willee
 
Smartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone BudgetSmartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone Budget
 
The More Capable Series 40 Java Platform
The More Capable Series 40 Java PlatformThe More Capable Series 40 Java Platform
The More Capable Series 40 Java Platform
 
Android Deep Dive
Android Deep DiveAndroid Deep Dive
Android Deep Dive
 

Andere mochten auch

Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartNokiaAppForum
 
Avangate transition to_saa_s_-_whitepaper
Avangate transition to_saa_s_-_whitepaperAvangate transition to_saa_s_-_whitepaper
Avangate transition to_saa_s_-_whitepaper2Checkout
 
Social Networking Media
Social Networking MediaSocial Networking Media
Social Networking Media2Checkout
 
Social Media, Social Networking and School Libraries.
Social Media, Social Networking and School Libraries.Social Media, Social Networking and School Libraries.
Social Media, Social Networking and School Libraries.Judy O'Connell
 
Linux architecture
Linux architectureLinux architecture
Linux architecturemcganesh
 
Intro. to prog. c++
Intro. to prog. c++Intro. to prog. c++
Intro. to prog. c++KurdGul
 
How to Use Social Media to Influence the World
How to Use Social Media to Influence the WorldHow to Use Social Media to Influence the World
How to Use Social Media to Influence the WorldSean Si
 

Andere mochten auch (11)

Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo Quickstart
 
Avangate transition to_saa_s_-_whitepaper
Avangate transition to_saa_s_-_whitepaperAvangate transition to_saa_s_-_whitepaper
Avangate transition to_saa_s_-_whitepaper
 
Social Networking Media
Social Networking MediaSocial Networking Media
Social Networking Media
 
Social Media, Social Networking and School Libraries.
Social Media, Social Networking and School Libraries.Social Media, Social Networking and School Libraries.
Social Media, Social Networking and School Libraries.
 
Linux kernel architecture
Linux kernel architectureLinux kernel architecture
Linux kernel architecture
 
Linux architecture
Linux architectureLinux architecture
Linux architecture
 
NOKIA PRESENTATION
NOKIA PRESENTATIONNOKIA PRESENTATION
NOKIA PRESENTATION
 
Intro. to prog. c++
Intro. to prog. c++Intro. to prog. c++
Intro. to prog. c++
 
Architecture Of The Linux Kernel
Architecture Of The Linux KernelArchitecture Of The Linux Kernel
Architecture Of The Linux Kernel
 
How to Use Social Media to Influence the World
How to Use Social Media to Influence the WorldHow to Use Social Media to Influence the World
How to Use Social Media to Influence the World
 
Social Media for Business
Social Media for BusinessSocial Media for Business
Social Media for Business
 

Ähnlich wie Nokia Qt SDK in action - Qt developer days 2010

Developing and Deploying Microservices to IBM Cloud Private
Developing and Deploying Microservices to IBM Cloud PrivateDeveloping and Deploying Microservices to IBM Cloud Private
Developing and Deploying Microservices to IBM Cloud PrivateShikha Srivastava
 
Was liberty profile and docker
Was liberty profile and dockerWas liberty profile and docker
Was liberty profile and dockersflynn073
 
WebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and DockerWebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and DockerDavid Currie
 
Android Architecture design programming with java
Android Architecture design programming with javaAndroid Architecture design programming with java
Android Architecture design programming with javassuser471dfb
 
Docker intro
Docker introDocker intro
Docker introspiddy
 
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...NRB
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Patrick Chanezon
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationAlex Vranceanu
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013dotCloud
 
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015Ajin Abraham
 
Deep Dive Into Android Security
Deep Dive Into Android SecurityDeep Dive Into Android Security
Deep Dive Into Android SecurityMarakana Inc.
 
Meego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea GrandiMeego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea GrandiFrancesco Baldassarri
 
Ansible Tower | Docker | Cisco ACI
Ansible Tower | Docker | Cisco ACIAnsible Tower | Docker | Cisco ACI
Ansible Tower | Docker | Cisco ACIJoel W. King
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...NETWAYS
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Lean IT Consulting
 
JAX 2014 - The PaaS to a better IT architecture.
JAX 2014 - The PaaS to a better IT architecture.JAX 2014 - The PaaS to a better IT architecture.
JAX 2014 - The PaaS to a better IT architecture.Sebastian Faulhaber
 

Ähnlich wie Nokia Qt SDK in action - Qt developer days 2010 (20)

Developing and Deploying Microservices to IBM Cloud Private
Developing and Deploying Microservices to IBM Cloud PrivateDeveloping and Deploying Microservices to IBM Cloud Private
Developing and Deploying Microservices to IBM Cloud Private
 
Was liberty profile and docker
Was liberty profile and dockerWas liberty profile and docker
Was liberty profile and docker
 
WebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and DockerWebSphere Application Server Liberty Profile and Docker
WebSphere Application Server Liberty Profile and Docker
 
Android Architecture design programming with java
Android Architecture design programming with javaAndroid Architecture design programming with java
Android Architecture design programming with java
 
Docker intro
Docker introDocker intro
Docker intro
 
OpenStack Summit
OpenStack SummitOpenStack Summit
OpenStack Summit
 
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
 
Symbian OS
Symbian OSSymbian OS
Symbian OS
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
 
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
 
Deep Dive Into Android Security
Deep Dive Into Android SecurityDeep Dive Into Android Security
Deep Dive Into Android Security
 
Cont0519
Cont0519Cont0519
Cont0519
 
Meego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea GrandiMeego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea Grandi
 
Ansible Tower | Docker | Cisco ACI
Ansible Tower | Docker | Cisco ACIAnsible Tower | Docker | Cisco ACI
Ansible Tower | Docker | Cisco ACI
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
JAX 2014 - The PaaS to a better IT architecture.
JAX 2014 - The PaaS to a better IT architecture.JAX 2014 - The PaaS to a better IT architecture.
JAX 2014 - The PaaS to a better IT architecture.
 

Kürzlich hochgeladen

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Kürzlich hochgeladen (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

Nokia Qt SDK in action - Qt developer days 2010

  • 1. Nokia Qt SDK in Action Qt Developer Days 2010 12.10.2010 Pekka Kosonen Slides are available in http://www.slideshare.net/pkosonen
  • 2. Soup of today Ingredients are: 1. Overview and demo of Nokia Qt SDK 1.0 2. Taking your Qt app to Nokia platforms using Nokia Qt SDK • The topics that you need to know about Symbian and Maemo and how to handle those. 3. Publishing to Ovi and Ovi Store Symbian Signing Service 4. Spicing up the soup with platform SDKs • When you might want to tap into platform specific SDKs – focusing on Symbian. Slides are available in http://www.slideshare.net/pkosonen
  • 3. have now Where we will be have What we used to Slides are available in http://www.slideshare.net/pkosonen
  • 4. Now - Nokia Qt SDK 1.0 overview Install. All in just one package. Easy to customize and update. Simulate. Fast, easy to use and lightweight simulator. Create. Qt Creator - Easy to use IDE Install Develop Simulate Deploy*
  • 5. Simulator • Quick launch • Simulate Qt Mobility project features • Scripting possibilities • Skins for different platforms / form-factors
  • 6. On-device Debugging Debugging host Qt Creator
  • 7. Switching Target Platforms • Select Symbian or Maemo target • Build, deploy and debug • Supports also switching the target to Remote Compiler or Symbian Emulator
  • 8. 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)
  • 9. Coding demo 1 //geoflickr, using location API, fetch //pictures from flickr taken near you. //run in simulator, N8 & N900 Geoflickr – simulator, symbian, maemo
  • 10. Taking your Qt application to Nokia platforms The topics to consider
  • 11. Taking your app to Nokia platforms – the laundry list Symbian - minimum laundry list Maemo - minimum laundry list 1. Optimize the app 1. Optimize the app 2. Get an UID 3. Figure out the capabilities 4. Do an icon 2. Do an icon 5. Modify .pro file 3. Modify .pro file 6. Test on several devices 4. Test on the Nokia N900 7. Create a sis file with Nokia Qt 5. Tweak the debian files for SDK Nokia Qt SDK 8. Sign the sis file 6. Create the debian package 9. Take smart installer into use 10. Distribute the embedded pkg 7. Distribute
  • 12. 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 downloading huge packages, atleast if not in WLAN • Consider the usage of Qt Webkit in your application.
  • 13. 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.
  • 14. 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
  • 15. Capabilities Ovi Store Symbian Signing Service and signing Capability Group Capability Name Self-Signed Open Signed Open Signed Express Signed Certified Online Offline Signed User Capabilities LocalServices Yes, with user Yes Yes Yes Yes Location confirmation at install time NetworkServices ReadUserData UserEnvironment WriteUserData System PowerMgmt No Yes Yes Yes Yes Capabilities ProtServ ReadDeviceData SurroundingsDD SwEvent TrustedUI WriteDeviceData Restricted CommDD No No Yes No Yes Capabilities DiskAdmin NetworkControl MultimediaDD Device AllFiles No No No No See below Manufacturer DRM Capabilities TCB
  • 16. 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
  • 17. 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…
  • 18. 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
  • 19. 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 // Qt app stack typically larger than 8kb TARGET.EPOCSTACKSIZE = 0x5000 // Min 128Kb, Max 16Mb TARGET.EPOCHEAPSIZE = “0x20000 0x1000000” } • This way the same .pro file would potentially work in other environments as well 2
  • 20. 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
  • 22. Remember the laundry list? Symbian - minimum laundry list Maemo - minimum laundry list 1. Optimize the app 1. Optimize the app 2. Get an UID TODO 3. Figure out the capabilities 4. Do an icon 2. Do an icon 5. Modify .pro file 3. Modify .pro file 6. Test on several devices 4. Test on the Nokia N900 7. Create a sis file with Nokia Qt 5. Tweak the debian definitions SDK for Nokia Qt SDK 8. Sign the sis file 6. Create the debian package 9. Take smart installer into use 10. Distribute the embedded pkg 7. Distribute
  • 23. 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
  • 24. Smart Installer for Qt for Symbian The opportunity The The solution A Smart Installer tool that +100M Symbian devices problem checks whether needed could run cross-platform Qt Qt libraries need to applications already during Qt version is available on be post installed – the device – and if not, it this year most consumers will handle the installation might not bother Details •Tool called Smart Installer for Symbian devices •Comes with Nokia Qt SDK •A small binary to be packaged together with the Qt application targeted for Symbian devices •The Smart Installer will download OTA the needed Qt & Mobility version to the handset if it is not already present
  • 25. Tools & SDKs – Smart Installer your_app.sis 1 Adm 3 2 Deps Check 4 Qt +Webkit +Mobility http://tinyurl.com/SmartInstaller
  • 26. Smart installer overview Embedded.sis • Scenario is Application.sis Smart installer.sis – Sign your application – Create a embedded package that contains • Your application • Smart installer – Publish the embedded package • Qt for Symbian SDKs qmake supports automatic creation of the package. • http://tinyurl.com/SmartInstaller • http://blogs.forum.nokia.com/blog/ovi-publisher- alert/2010/08/02/qt-content-qa
  • 27. 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‟
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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 #{"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
  • 32. Let‟s have a look at how it‟s done • TODO add the video here
  • 34. Final step in the laundry list Symbian - minimum laundry list Maemo - minimum laundry list 1. Optimize the app 1. Optimize the app 2. Get an UID 3. Figure out the capabilities 4. Do an icon 2. Do an icon 5. Modify .pro file 3. Modify .pro file 6. Test on several devices 4. Test on the Nokia N900 7. Create a sis file with Nokia Qt 5. Tweak the debian definitions SDK for Nokia Qt SDK 8. Sign the sis file 6. Create the debian package 9. Take smart installer into use 10. Distribute the embedded pkg 7. Distribute the .deb
  • 35. Ovi Store: 6 numbers you should know 2.5 Million 30 91 downloads daily Languages operators 135+ 190+ 90% Mobile consumers devices countries w/local Store
  • 36. Our goal is simple Let‟s make it easy to put your app in the hands of millions of consumers Consumers + Developers + Financial Enablers = $£€¥
  • 37. Qt apps on Ovi store • Currently : – Qt apps can be published for Symbian and Maemo devices using Qt 4.6.3 – Currently 8 devices on the market (N8, X6, N97 mini, E6, 5800, 5530, 5230 and N900) are supported. • Early 2011 – Targeting +20 devices (by end of this year) that will cover the most popular devices causing downloads from the store. – Qt 4.7 based application distribution enabled* * 4.7 apps can be deployed to N900 already once PR 1.3 is available
  • 38. 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/
  • 39. Publish to Ovi - registration
  • 40. 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 www.forum.nokia.com/Distribute/
  • 41. 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 continuosly adding new devices to be supported for Qt application distribution – currently 8 devices supported.
  • 42. 5. Spicing up the development environment with platform specific tools
  • 43. Tools and SDKs Nokia Qt SDK Symbian SDK Qt 4.6.3 Native APIs Qt Mobility Plug-in APIs Simulator Documentation On-device debugging Emulator Simplified Symbian SDK + additional tooling in For extended Carbide access Qt libraries for Symbian • Framework-only Enough for many • Documentation applications
  • 44. 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
  • 45. Using platform specific APIs from Qt
  • 46. 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
  • 47. Code example 1 same source files, #ifdef platform specific code #include "signer.h" // Continued… // Convert signatureBase into a Symbian string: #ifdef Q_OS_SYMBIAN TPtrC8 basePtr(reinterpret_cast<const TUint8*>(signatureBase.constData()), #include <hash.h> signatureBase.length()); #else TBuf8<1024> baseString; #include <openssl/hmac.h> baseString.Copy(basePtr); #endif // Create the raw signature: QByteArray Signer::sign(QByteArray const TPtrC8 hashedSignature(hmac->Hash(baseString)); &signingSecret, QByteArray const &signatureBase) signature = QByteArray(reinterpret_cast<const char const *>(hashedSignature.Ptr()), { hashedSignature.Length()); QByteArray signature; #ifdef Q_OS_SYMBIAN CleanupStack::PopAndDestroy(hmac); // Convert signingSecret into a Symbian string: #else TPtrC8 keyPtr(reinterpret_cast<const unsigned char *md = new unsigned char[32]; TUint8*>(signingSecret.constData()), unsigned int md_len = 32; signingSecret.length()); HMAC(EVP_sha1(), signingSecret.constData(), signingSecret.length(), TBuf8<100> keyVal; reinterpret_cast<const unsigned char *>(signatureBase.constData()), keyVal.Copy(keyPtr); signatureBase.length(), md, &md_len); signature = QByteArray(reinterpret_cast<const char *>(md), md_len); // Initialize the signing-related objects: delete[] md; CSHA1 *sha1 = CSHA1::NewL(); #endif CHMAC *hmac = CHMAC::NewL(keyVal, sha1); CleanupStack::PushL(hmac); return signature.toBase64(); }
  • 48. Code example 2 Isolate platform specific parts to separate files to include ... HEADERS += qbluetoothaddressdata.h # public header // bluetoothdiscovery.cpp SOURCES += bluetoothdiscovery.cpp # public class implementation ... ... #ifdef Q_OS_SYMBIAN symbian { #include ... ”bluetoothdiscovery_symbian_p.h” HEADERS += bluetoothdiscovery_symbian_p.h # #else Symbian private class header #include ”bluetoothdiscovery_stub_p.h” SOURCES += bluetoothdiscovery_symbian_p.cpp # Symbian private class source code // Stub for all other platforms LIBS += -lesock #endif -lbluetooth TARGET.CAPABILITY = LocalServices NetworkServices ReadUserData UserEnvironment WriteUserData }
  • 49. Example 3 Write a separate library • Best resource is http://developer.symbian.org/wiki/index.php/Using_Qt_and_Symbi an_C%2B%2B_Together – Based on http://qt.nokia.com/files/pdf/whitepaper-using-qt-and- symbian-c-together/view • Provides a separate library for Symbian that isolates the use of Bluetooth Symbian APIs and provides a Qt like interface for it • Other resources: – For guidance on maemo see the maemo for mobile document in http://wiki.forum.nokia.com/index.php/Qt_for_Maemo_Developers_Guide • LibLocation • LibCityinfo • MCEDev • ICD2
  • 50. Using platform specific Tools with Qt
  • 52. Symbian – platform security demo1 • Run an app in simulator that renames files in c:sysbin. Works just fine. • Run in Symbian emulator and see what happens
  • 53.
  • 54. Symbian – platsec demo2 • Run an application with no capabilities on simulator that uses location and network connectivity. Works just fine. • Run on symbian emulator and see what happens.
  • 55.
  • 56. 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.
  • 57. Summary • Nokia Qt SDK 1.0 makes it easy to bring Qt applications to Nokia platforms – Spicing the SDK up with platform SDKs gives you access to (almost) all the features the devices offers + additional tooling • Once you‟ve wriggled through the signing jungle once it‟s piece of cake. • Publishing to Ovi store is in majority of cases free and open for individuals. • All these great things can only lead to… Slides are available in http://www.slideshare.net/pkosonen
  • 58. Time for you to start thinking tricky questions while I prepare for final demo… Slides are available in http://www.slideshare.net/pkosonen
  • 59. 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
  • 60. 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