SlideShare une entreprise Scribd logo
1  sur  73
Télécharger pour lire hors ligne
Targeting Android with Qt
 Espen Riskedal / cutehacks.com
          @snowpong
Introduction



        About me,
    and about the talk.
About me


●
    Trolltech and Nokia
●
    Symbian and Windows CE
●
    Co-founded cutehacks.com         Espen Riskedal
                                      @snowpong
●
    Still believe in Qt Everywhere
We make apps
Purpose of this talk


“Teach you how to publish Qt
 apps in the Android market”
      I have a vested interest.
Agenda


●
    Introduction
●
    Qt on mobile platforms
●
    Necessitas
●
    Publishing to Android Market
●
    Conclusion
2.3.x “Gingerbread”
         ●
           Google Nexus S
         ●
           December 2010
         ●
           Linux kernel 2.6.35




Photo: flickr.com/quinnanya/
 CC / Some rights reserved
Qt on mobile platforms



A brief introduction on which
mobile platforms you can target
with Qt.
Today's mobile platforms
Supported by Qt
Almost supported by Qt
Some Android details


●
    4 major releases
●
    ARM and x86
●
    Linux
●
    Dalvik
Well known models




Galaxy S2    Tab 10.1     Xperia Play
Android API levels

Platform version      API Level VERSION_CODE
...                   ...     ...
Android 2.3 – 2.3.2   9       GINGERBREAD
...                   ...     ...
Android 2.1.x         7       ECLAIR_MR
...                   ...     ...
Android 1.5           3       CUPCAKE
...                   ...     ...
Android platform distribution




 http://developer.android.com/resources/dashboard/platform-versions.html
A possible future for Qt
Photo: flickr.com/quinnanya/
 CC / Some rights reserved




                               1.6 “Donut”
                                ●
                                  Acer Liquid A1
                                ●
                                  September 2009
                                ●
                                  Linux kernel 2.6.29
Necessitas



Necessitas is a community port
of Qt for Android. Its founder
and main developer is BogDan
Vatra.
Installing Necessitas


●
    OpenJDK (and Ant)
●
    Necessitas 0.3 (3rd alpha)

                    http://bit.ly/qtand03
     ●
         Linux
     ●
         not root
Default values are OK
Included components


Android SDK
Android NDK
Qt, QtWebKit, QtMobility
Qt Creator
gdb / gdbserver
Ant
JDK
Adding an emulator
Getting a USB connection
●
    Enable USB debugging
    ●
        Settings->Applications->Development


●
    Check connection
        cd android-sdk/platform-tools
        ./adb devices

        304D1...6203B05E       device
        ????????????????       no permissions


●
    Restart if needed
        sudo ./adb kill-server
        sudo ./adb devices
Install Ministro / Ministro 2
A “Hello Qt Quick” example

●
    Qt Quick Project → Qt Quick Application
     ●
         Name
     ●
         Target (Android / armv5)
     ●
         Next/Next/Next
●
    Add QtDeclarative
●
    Press Ctrl-R
Let's do it for real
Our “funky” main.qml
import QtQuick 1.0

Rectangle {
    anchors.fill: parent
    gradient: Gradient {
       GradientStop { position: 0.0; color: "red" }
       GradientStop { position: 0.33; color: "yellow" }
       GradientStop { position: 1.0; color: "green" }
    }
    Rectangle {
        id:ball;
        width:100;
        height:100;
        radius: 50
        color:"black"
        Behavior on x { PropertyAnimation{ duration:500; easing.type: Easing.OutBounce} }
        Behavior on y { PropertyAnimation{ duration:500; easing.type: Easing.OutBounce} }
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            ball.x=mouse.x
            ball.y=mouse.y
        }
    }
}
Psychedelic bouncy ball
Added files explained


In addition to the .pro and .h/.cpp files:
android/AndroidManifest.xml
android/build.xml
android/res/*
android/src/.../ministro/*
android/src/.../origo/Qt*
How does it really work?
Necessitas status

●
    SDK (almost) complete for
     ●
         Windows, Linux and Mac
●
    Qt Creator
     ●
         Deploy libraries and app
     ●
         Run app
     ●
         Debug app
     ●
         Signs the app
Popularity of Necessitas


●
    ~10000 downloads of 0.2.1 (2nd alpha)

●
    ~3200 downloads of 0.3 so far (3rd alpha)

●
    ~5000 views of my Münich slides
Necessitas roadmap
●
  Alpha3 (just released!)
    ●
      Lots of fixes
    ●
      Signing for Android Market
    ●
      OpenGL etc.
    ●
      ...
●
  Alpha4
    ●
      Android Style
    ●
      Menu integration
    ●
      ...
●
  Beta
    ●
      Refactor Java wrapper code
    ●
      Promise BIC
    ●
      …?
Porting an actual app




Nokia N9 / Nokia 700
                       Samsung Galaxy S2
Changes needed


●
    Use the right QML file and showFullScreen()
●
    Hack around font issue
●
    Add app icons
●
    Set package name
●
    Set minSdkVersion
QML and showFullScr...

--- a/main.cpp
+++ b/main.cpp
@@ -50,14 +56,16 @@ int main(int argc, char *argv[])


-#elif defined (Q_OS_SYMBIAN)
+#elif defined (Q_OS_ANDROID) || defined(Q_OS_SYMBIAN)
  view.setSource(QUrl("qrc:/qml/Main.qml"));
  view.showFullScreen();
#else
Font hack
--- a/main.cpp
+++ b/main.cpp
@@ -29,6 +29,12 @@ int main(int argc, char *argv[])
    application.setOrganizationDomain("cutehacks.com");
    application.setOrganizationName("Cutehacks");


+#if defined(Q_OS_ANDROID)
+   QFont boldFont = application.font();
+   boldFont.setBold(true);
+   application.setFont(boldFont);
+#endif
Setting app icons

commit a91fa2461ced0e75270b71c41ee80309e0697777
Author: Espen Riskedal <espen@cutehacks.com>
Date:   Sun Oct 9 22:17:31 2011 +0200


   added proper icons where it counts


android/res/drawable-hdpi/icon.png
android/res/drawable-ldpi/icon.png
android/res/drawable-mdpi/icon.png
Setting package name


--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
-<manifest package="eu.licentia.necessitas...
+<manifest package="com.cutehacks.fly" ...
Setting minSdkVersion

--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -14,4 +14,5 @@
    <supports-screens android:largeScreens="t...
    <uses-permission android:name="android.pe...
    <uses-permission android:name="android.pe...
+   <uses-sdk android:minSdkVersion="7"/>
</manifest>
3.x “Honeycomb”
 ●
   Motorola Xoom
 ●
   February 2011
 ●
   Linux kernel 2.6.36



                         Photo: flickr.com/quinnanya/
                          CC / Some rights reserved
Publishing to Android Market



Sometimes the easy part is
writing the app. The hard part is
getting it published.
.APK format explained

●
  .JAR and .ZIP
●
  Typically includes:
      META-INF/
      res/
      AndroidManifest.xml
      classes.dex
      resources.arsc
●
  Native apps also include:
      libs/armeabi/
Two publishing options

Ministro              Bundling Qt
+ dev friendly        + UX
+ updates             + BIC
+ multiple archs      + custom fixes
+ space / bandwidth   - space / bandwidth
- UX                  - less archs
- updates             - no updates
- BIC
Bundling Qt with your app

Target one arch (ARMv5)
Set relatively high API level
Only include the actually needed libs
Disable Ministro dependencies
Beware of SSL certs
Here be dragons :-)
Publishing with Ministro


            cd android/
            ant release


This produces Fly-unsigned.apk in the
        shadowbuild directory.
Getting an A.M. account


  http://market.android.com/publish

              You'll need:


      A credit card with 25USD

          A phone number
Name, email and phone
Paying
Credit-card needed
One time fee of 25USD
Order sent
Distribution agreement
We can publish free apps!
Sign up for merchant
We can make money!
Signing the .APK

Create key
keytool -genkey -v -keystore cutehacks-
release-key.keystore -alias cutehackskeystore
-keyalg RSA -keysize 2048 -validity 10000


Sign package
jarsigner -verbose -keystore cutehacks-
release-key.keystore android/bin/Fly-
unsigned.apk cutehackskeystore
Verifying the signature

Verify signature
jarsigner -verify -verbose Fly-unsigned.apk
           585 Tue ... META-INF/MANIFEST.MF
           706 Tue ... META-INF/CUTEHACK.SF
          1327 Tue ... META-INF/CUTEHACK.RSA
sm        2932 Tue ... AndroidManifest.xml
sm        1500 Tue ... resources.arsc
sm        3064 Tue ... res/drawable-hdpi/icon.png
sm        1543 Tue ... res/drawable-ldpi/icon.png
sm        2347 Tue ... res/drawable-mdpi/icon.png
sm       86680 Tue ... classes.dex
sm      164020 Tue ... lib/armeabi/libfly.so
 s   = signature was verified m = entry is listed in manifest


Rename Fly-unsigned.apk to Fly-release.apk
Actually publishing
  http://market.android.com/publish

              You'll need:


      Signed APK (max 50MB)

    High-res app icon (512x512)

  Two screenshots (min 320x480)

         Title & Description
Upload .APK
Set name and screenshots
In the store
Installation UX with Ministro




Press app




            Press “FREE”



                           Press “OK”
Installation UX with Ministro



Press app


            Press “Yes”




                          Press “Ministro”
Installation UX with Ministro




Press “Install”

                  Press “Accept”


                                   Press “Yes”
Installation UX with Ministro
2.0/2.1 “Eclair”
                                ●
                                  Motorola Droid
                                ●
                                  October 2009
                                ●
                                  Linux kernel 2.6.29


Photo: flickr.com/quinnanya/
 CC / Some rights reserved
Conclusion



Let's summarize and look at the
           future.
Summary



Qt on mobile: Potential bright future
Necessitas: Out-of-the-box with rough edges
Android Market: Quick and easy
Qt's future



Qt 5 – Qt Quick and scenegraph
“The next billion”
iOS and BBX
Open Governance
Information on Necessitas
Mailinglist for users:
http://groups.google.com/group/android-qt

Mailinglist for devs/contributors:
https://mail.kde.org/mailman/listinfo/necessitas-devel

Repositories:
http://community.kde.org/Necessitas/Repositories

Wiki:
http://sourceforge.net/p/necessitas/home/necessitas/
It's already possible




        Fly in                                               Fly installed
    Android Market                                            on phone


               http://bit.ly/cutefly
             https://market.android.com/details?id=com.cutehacks.fly
Questions?



       Thank you!
     @snowpong (Twitter)

Contenu connexe

Tendances

Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009Nokia
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Softwareaccount inactive
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phonesaccount inactive
 
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
 
Intro to gui, cross platform and qt
Intro to gui, cross platform and qtIntro to gui, cross platform and qt
Intro to gui, cross platform and qtMuhammad Sabry
 
Creating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtCreating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtEspen Riskedal
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt CreatorQt
 
Meet Qt Canada
Meet Qt CanadaMeet Qt Canada
Meet Qt CanadaQt
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectIgalia
 
What is codename one
What is codename oneWhat is codename one
What is codename oneShai Almog
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopOpersys inc.
 
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparisonQt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparisonQt
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopOpersys inc.
 
Modern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtModern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtQt
 
Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartNokiaAppForum
 
Android Programming Basic
Android Programming BasicAndroid Programming Basic
Android Programming BasicDuy Do Phan
 
Building Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and QyotoBuilding Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and QyotoJeff Alstadt
 
Intel XDK in Brief
Intel XDK in BriefIntel XDK in Brief
Intel XDK in BriefCamilo Corea
 

Tendances (20)

Meet Qt
Meet QtMeet Qt
Meet Qt
 
Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
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
 
Intro to gui, cross platform and qt
Intro to gui, cross platform and qtIntro to gui, cross platform and qt
Intro to gui, cross platform and qt
 
Creating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtCreating Slick User Interfaces With Qt
Creating Slick User Interfaces With Qt
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
 
Meet Qt Canada
Meet Qt CanadaMeet Qt Canada
Meet Qt Canada
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project
 
What is codename one
What is codename oneWhat is codename one
What is codename one
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with Lollipop
 
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparisonQt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with Lollipop
 
Modern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtModern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qt
 
Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo Quickstart
 
Android Programming Basic
Android Programming BasicAndroid Programming Basic
Android Programming Basic
 
Building Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and QyotoBuilding Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and Qyoto
 
Intel XDK in Brief
Intel XDK in BriefIntel XDK in Brief
Intel XDK in Brief
 

En vedette

What's unique to Qt
What's unique to QtWhat's unique to Qt
What's unique to QtYikei Lu
 
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...Raj Lal
 
GNS3- A Brief User Guide
GNS3- A Brief User GuideGNS3- A Brief User Guide
GNS3- A Brief User Guide1Pv6_Zahra
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing moreICS
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickICS
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Nativeaccount inactive
 
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIBest Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIICS
 
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIICS
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key conceptsICS
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVICS
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IICS
 
Packet Tracer Tutorial # 2
Packet Tracer Tutorial # 2Packet Tracer Tutorial # 2
Packet Tracer Tutorial # 2Abdul Basit
 
Practical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme ChangePractical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme ChangeBurkhard Stubert
 
Packet Tracer Tutorial # 1
Packet Tracer Tutorial # 1Packet Tracer Tutorial # 1
Packet Tracer Tutorial # 1Abdul Basit
 

En vedette (20)

What's unique to Qt
What's unique to QtWhat's unique to Qt
What's unique to Qt
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
 
Qt Qml
Qt QmlQt Qml
Qt Qml
 
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
 
GNS3- A Brief User Guide
GNS3- A Brief User GuideGNS3- A Brief User Guide
GNS3- A Brief User Guide
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
Qt Application Development
Qt Application DevelopmentQt Application Development
Qt Application Development
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
 
Gns3
Gns3Gns3
Gns3
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Native
 
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIBest Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part III
 
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
 
Packet Tracer Tutorial # 2
Packet Tracer Tutorial # 2Packet Tracer Tutorial # 2
Packet Tracer Tutorial # 2
 
Router commands
Router commandsRouter commands
Router commands
 
Practical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme ChangePractical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme Change
 
Packet Tracer Tutorial # 1
Packet Tracer Tutorial # 1Packet Tracer Tutorial # 1
Packet Tracer Tutorial # 1
 

Similaire à Targeting Android with Qt

Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Johan Thelin
 
Container based android
Container based androidContainer based android
Container based androidLihan Chen
 
Is Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVIs Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVOpersys inc.
 
Open Kode, Airplay And The New Reality Of Write Once Run Anywhere
Open Kode, Airplay And The New Reality Of Write Once Run AnywhereOpen Kode, Airplay And The New Reality Of Write Once Run Anywhere
Open Kode, Airplay And The New Reality Of Write Once Run Anywhereguest991eb3
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalNAVER D2
 
Android Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part IAndroid Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part IOpersys inc.
 
Minko stage3d 20130222
Minko stage3d 20130222Minko stage3d 20130222
Minko stage3d 20130222Minko3D
 
Linux Kernel , BSP, Boot Loader, ARM Engineer - Satish profile
Linux Kernel , BSP, Boot Loader, ARM Engineer - Satish profileLinux Kernel , BSP, Boot Loader, ARM Engineer - Satish profile
Linux Kernel , BSP, Boot Loader, ARM Engineer - Satish profileSatish Kumar
 
Build a Game in 60 minutes
Build a Game in 60 minutesBuild a Game in 60 minutes
Build a Game in 60 minutesTroy Miles
 
Build and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with dockerBuild and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with dockerQt
 
Webinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with DockerWebinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with DockerBurkhard Stubert
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeOpersys inc.
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard
 
Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Opersys inc.
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Androidnatdefreitas
 
Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1Mohsen Mirhoseini
 
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Andreas Jakl
 
Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинGDG Saint Petersburg
 

Similaire à Targeting Android with Qt (20)

Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
 
Container based android
Container based androidContainer based android
Container based android
 
Is Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVIs Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IV
 
Open Kode, Airplay And The New Reality Of Write Once Run Anywhere
Open Kode, Airplay And The New Reality Of Write Once Run AnywhereOpen Kode, Airplay And The New Reality Of Write Once Run Anywhere
Open Kode, Airplay And The New Reality Of Write Once Run Anywhere
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_final
 
Android Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part IAndroid Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part I
 
Deep Learning Edge
Deep Learning Edge Deep Learning Edge
Deep Learning Edge
 
Minko stage3d 20130222
Minko stage3d 20130222Minko stage3d 20130222
Minko stage3d 20130222
 
Linux Kernel , BSP, Boot Loader, ARM Engineer - Satish profile
Linux Kernel , BSP, Boot Loader, ARM Engineer - Satish profileLinux Kernel , BSP, Boot Loader, ARM Engineer - Satish profile
Linux Kernel , BSP, Boot Loader, ARM Engineer - Satish profile
 
Build a Game in 60 minutes
Build a Game in 60 minutesBuild a Game in 60 minutes
Build a Game in 60 minutes
 
Build and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with dockerBuild and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with docker
 
Webinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with DockerWebinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with Docker
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC Europe
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: Flutter
 
Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
 
Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
 
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
 
Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья Лёвин
 

Plus de Espen Riskedal

Experiences so far - Cutehacks at AppAcademy 2013
Experiences so far - Cutehacks at AppAcademy 2013Experiences so far - Cutehacks at AppAcademy 2013
Experiences so far - Cutehacks at AppAcademy 2013Espen Riskedal
 
Cross platform mobile design
Cross platform mobile designCross platform mobile design
Cross platform mobile designEspen Riskedal
 
Mobile Services with Qt
Mobile Services with QtMobile Services with Qt
Mobile Services with QtEspen Riskedal
 
Mobil krigføring - en 10 min. intro
Mobil krigføring - en 10 min. introMobil krigføring - en 10 min. intro
Mobil krigføring - en 10 min. introEspen Riskedal
 
The Scandinavian mobile app market
The Scandinavian mobile app marketThe Scandinavian mobile app market
The Scandinavian mobile app marketEspen Riskedal
 
The Mobile Market and Qt
The Mobile Market and QtThe Mobile Market and Qt
The Mobile Market and QtEspen Riskedal
 

Plus de Espen Riskedal (6)

Experiences so far - Cutehacks at AppAcademy 2013
Experiences so far - Cutehacks at AppAcademy 2013Experiences so far - Cutehacks at AppAcademy 2013
Experiences so far - Cutehacks at AppAcademy 2013
 
Cross platform mobile design
Cross platform mobile designCross platform mobile design
Cross platform mobile design
 
Mobile Services with Qt
Mobile Services with QtMobile Services with Qt
Mobile Services with Qt
 
Mobil krigføring - en 10 min. intro
Mobil krigføring - en 10 min. introMobil krigføring - en 10 min. intro
Mobil krigføring - en 10 min. intro
 
The Scandinavian mobile app market
The Scandinavian mobile app marketThe Scandinavian mobile app market
The Scandinavian mobile app market
 
The Mobile Market and Qt
The Mobile Market and QtThe Mobile Market and Qt
The Mobile Market and Qt
 

Dernier

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Dernier (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Targeting Android with Qt

  • 1. Targeting Android with Qt Espen Riskedal / cutehacks.com @snowpong
  • 2. Introduction About me, and about the talk.
  • 3. About me ● Trolltech and Nokia ● Symbian and Windows CE ● Co-founded cutehacks.com Espen Riskedal @snowpong ● Still believe in Qt Everywhere
  • 5. Purpose of this talk “Teach you how to publish Qt apps in the Android market” I have a vested interest.
  • 6. Agenda ● Introduction ● Qt on mobile platforms ● Necessitas ● Publishing to Android Market ● Conclusion
  • 7. 2.3.x “Gingerbread” ● Google Nexus S ● December 2010 ● Linux kernel 2.6.35 Photo: flickr.com/quinnanya/ CC / Some rights reserved
  • 8. Qt on mobile platforms A brief introduction on which mobile platforms you can target with Qt.
  • 12. Some Android details ● 4 major releases ● ARM and x86 ● Linux ● Dalvik
  • 13. Well known models Galaxy S2 Tab 10.1 Xperia Play
  • 14. Android API levels Platform version API Level VERSION_CODE ... ... ... Android 2.3 – 2.3.2 9 GINGERBREAD ... ... ... Android 2.1.x 7 ECLAIR_MR ... ... ... Android 1.5 3 CUPCAKE ... ... ...
  • 15. Android platform distribution http://developer.android.com/resources/dashboard/platform-versions.html
  • 17. Photo: flickr.com/quinnanya/ CC / Some rights reserved 1.6 “Donut” ● Acer Liquid A1 ● September 2009 ● Linux kernel 2.6.29
  • 18. Necessitas Necessitas is a community port of Qt for Android. Its founder and main developer is BogDan Vatra.
  • 19. Installing Necessitas ● OpenJDK (and Ant) ● Necessitas 0.3 (3rd alpha) http://bit.ly/qtand03 ● Linux ● not root
  • 21. Included components Android SDK Android NDK Qt, QtWebKit, QtMobility Qt Creator gdb / gdbserver Ant JDK
  • 23. Getting a USB connection ● Enable USB debugging ● Settings->Applications->Development ● Check connection cd android-sdk/platform-tools ./adb devices 304D1...6203B05E device ???????????????? no permissions ● Restart if needed sudo ./adb kill-server sudo ./adb devices
  • 24. Install Ministro / Ministro 2
  • 25. A “Hello Qt Quick” example ● Qt Quick Project → Qt Quick Application ● Name ● Target (Android / armv5) ● Next/Next/Next ● Add QtDeclarative ● Press Ctrl-R
  • 26. Let's do it for real
  • 27. Our “funky” main.qml import QtQuick 1.0 Rectangle { anchors.fill: parent gradient: Gradient { GradientStop { position: 0.0; color: "red" } GradientStop { position: 0.33; color: "yellow" } GradientStop { position: 1.0; color: "green" } } Rectangle { id:ball; width:100; height:100; radius: 50 color:"black" Behavior on x { PropertyAnimation{ duration:500; easing.type: Easing.OutBounce} } Behavior on y { PropertyAnimation{ duration:500; easing.type: Easing.OutBounce} } } MouseArea { anchors.fill: parent onClicked: { ball.x=mouse.x ball.y=mouse.y } } }
  • 29. Added files explained In addition to the .pro and .h/.cpp files: android/AndroidManifest.xml android/build.xml android/res/* android/src/.../ministro/* android/src/.../origo/Qt*
  • 30. How does it really work?
  • 31. Necessitas status ● SDK (almost) complete for ● Windows, Linux and Mac ● Qt Creator ● Deploy libraries and app ● Run app ● Debug app ● Signs the app
  • 32. Popularity of Necessitas ● ~10000 downloads of 0.2.1 (2nd alpha) ● ~3200 downloads of 0.3 so far (3rd alpha) ● ~5000 views of my Münich slides
  • 33. Necessitas roadmap ● Alpha3 (just released!) ● Lots of fixes ● Signing for Android Market ● OpenGL etc. ● ... ● Alpha4 ● Android Style ● Menu integration ● ... ● Beta ● Refactor Java wrapper code ● Promise BIC ● …?
  • 34. Porting an actual app Nokia N9 / Nokia 700 Samsung Galaxy S2
  • 35. Changes needed ● Use the right QML file and showFullScreen() ● Hack around font issue ● Add app icons ● Set package name ● Set minSdkVersion
  • 36. QML and showFullScr... --- a/main.cpp +++ b/main.cpp @@ -50,14 +56,16 @@ int main(int argc, char *argv[]) -#elif defined (Q_OS_SYMBIAN) +#elif defined (Q_OS_ANDROID) || defined(Q_OS_SYMBIAN) view.setSource(QUrl("qrc:/qml/Main.qml")); view.showFullScreen(); #else
  • 37. Font hack --- a/main.cpp +++ b/main.cpp @@ -29,6 +29,12 @@ int main(int argc, char *argv[]) application.setOrganizationDomain("cutehacks.com"); application.setOrganizationName("Cutehacks"); +#if defined(Q_OS_ANDROID) + QFont boldFont = application.font(); + boldFont.setBold(true); + application.setFont(boldFont); +#endif
  • 38. Setting app icons commit a91fa2461ced0e75270b71c41ee80309e0697777 Author: Espen Riskedal <espen@cutehacks.com> Date: Sun Oct 9 22:17:31 2011 +0200 added proper icons where it counts android/res/drawable-hdpi/icon.png android/res/drawable-ldpi/icon.png android/res/drawable-mdpi/icon.png
  • 39. Setting package name --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,5 +1,5 @@ <?xml version='1.0' encoding='utf-8'?> -<manifest package="eu.licentia.necessitas... +<manifest package="com.cutehacks.fly" ...
  • 40. Setting minSdkVersion --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -14,4 +14,5 @@ <supports-screens android:largeScreens="t... <uses-permission android:name="android.pe... <uses-permission android:name="android.pe... + <uses-sdk android:minSdkVersion="7"/> </manifest>
  • 41. 3.x “Honeycomb” ● Motorola Xoom ● February 2011 ● Linux kernel 2.6.36 Photo: flickr.com/quinnanya/ CC / Some rights reserved
  • 42. Publishing to Android Market Sometimes the easy part is writing the app. The hard part is getting it published.
  • 43. .APK format explained ● .JAR and .ZIP ● Typically includes: META-INF/ res/ AndroidManifest.xml classes.dex resources.arsc ● Native apps also include: libs/armeabi/
  • 44. Two publishing options Ministro Bundling Qt + dev friendly + UX + updates + BIC + multiple archs + custom fixes + space / bandwidth - space / bandwidth - UX - less archs - updates - no updates - BIC
  • 45. Bundling Qt with your app Target one arch (ARMv5) Set relatively high API level Only include the actually needed libs Disable Ministro dependencies Beware of SSL certs Here be dragons :-)
  • 46. Publishing with Ministro cd android/ ant release This produces Fly-unsigned.apk in the shadowbuild directory.
  • 47. Getting an A.M. account http://market.android.com/publish You'll need: A credit card with 25USD A phone number
  • 51. One time fee of 25USD
  • 54. We can publish free apps!
  • 55. Sign up for merchant
  • 56. We can make money!
  • 57. Signing the .APK Create key keytool -genkey -v -keystore cutehacks- release-key.keystore -alias cutehackskeystore -keyalg RSA -keysize 2048 -validity 10000 Sign package jarsigner -verbose -keystore cutehacks- release-key.keystore android/bin/Fly- unsigned.apk cutehackskeystore
  • 58. Verifying the signature Verify signature jarsigner -verify -verbose Fly-unsigned.apk 585 Tue ... META-INF/MANIFEST.MF 706 Tue ... META-INF/CUTEHACK.SF 1327 Tue ... META-INF/CUTEHACK.RSA sm 2932 Tue ... AndroidManifest.xml sm 1500 Tue ... resources.arsc sm 3064 Tue ... res/drawable-hdpi/icon.png sm 1543 Tue ... res/drawable-ldpi/icon.png sm 2347 Tue ... res/drawable-mdpi/icon.png sm 86680 Tue ... classes.dex sm 164020 Tue ... lib/armeabi/libfly.so s = signature was verified m = entry is listed in manifest Rename Fly-unsigned.apk to Fly-release.apk
  • 59. Actually publishing http://market.android.com/publish You'll need: Signed APK (max 50MB) High-res app icon (512x512) Two screenshots (min 320x480) Title & Description
  • 61. Set name and screenshots
  • 63. Installation UX with Ministro Press app Press “FREE” Press “OK”
  • 64. Installation UX with Ministro Press app Press “Yes” Press “Ministro”
  • 65. Installation UX with Ministro Press “Install” Press “Accept” Press “Yes”
  • 67. 2.0/2.1 “Eclair” ● Motorola Droid ● October 2009 ● Linux kernel 2.6.29 Photo: flickr.com/quinnanya/ CC / Some rights reserved
  • 68. Conclusion Let's summarize and look at the future.
  • 69. Summary Qt on mobile: Potential bright future Necessitas: Out-of-the-box with rough edges Android Market: Quick and easy
  • 70. Qt's future Qt 5 – Qt Quick and scenegraph “The next billion” iOS and BBX Open Governance
  • 71. Information on Necessitas Mailinglist for users: http://groups.google.com/group/android-qt Mailinglist for devs/contributors: https://mail.kde.org/mailman/listinfo/necessitas-devel Repositories: http://community.kde.org/Necessitas/Repositories Wiki: http://sourceforge.net/p/necessitas/home/necessitas/
  • 72. It's already possible Fly in Fly installed Android Market on phone http://bit.ly/cutefly https://market.android.com/details?id=com.cutehacks.fly
  • 73. Questions? Thank you! @snowpong (Twitter)

Notes de l'éditeur

  1. First released in Septemper 2008 together with HTC Dream phone
  2. First released in Septemper 2008 together with HTC Dream phone
  3. First released in Septemper 2008 together with HTC Dream phone