SlideShare a Scribd company logo
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)

More Related Content

What's hot

Meet Qt
Meet QtMeet 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
Nokia
 
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
account inactive
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
account 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 Symbian
account 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 qt
Muhammad Sabry
 
Creating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtCreating Slick User Interfaces With Qt
Creating Slick User Interfaces With Qt
Espen 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 & GWT
Manuel Carrasco Moñino
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
Qt
 
Meet Qt Canada
Meet Qt CanadaMeet Qt Canada
Meet Qt Canada
Qt
 
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
Igalia
 
What is codename one
What is codename oneWhat is codename one
What is codename one
Shai Almog
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with Lollipop
Opersys 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 comparison
Qt
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with Lollipop
Opersys 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 qt
Qt
 
Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo Quickstart
NokiaAppForum
 
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 Qyoto
Jeff Alstadt
 
Intel XDK in Brief
Intel XDK in BriefIntel XDK in Brief
Intel XDK in Brief
Camilo Corea
 

What's hot (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
 

Viewers also liked

What's unique to Qt
What's unique to QtWhat's unique to Qt
What's unique to Qt
Yikei Lu
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
account inactive
 
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 Guide
1Pv6_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 more
ICS
 
Qt Application Development
Qt Application DevelopmentQt Application Development
Qt Application Development
Dragos Tudor Acostachioaie
 
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
ICS
 
Gns3
Gns3Gns3
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
account 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 III
ICS
 
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
ICS
 
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
ICS
 
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
ICS
 
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
ICS
 
Packet Tracer Tutorial # 2
Packet Tracer Tutorial # 2Packet Tracer Tutorial # 2
Packet Tracer Tutorial # 2
Abdul 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 Change
Burkhard Stubert
 
Packet Tracer Tutorial # 1
Packet Tracer Tutorial # 1Packet Tracer Tutorial # 1
Packet Tracer Tutorial # 1
Abdul Basit
 

Viewers also liked (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
 

Similar to 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 android
Lihan 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 Anywhere
guest991eb3
 
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 I
Opersys inc.
 
Deep Learning Edge
Deep Learning Edge Deep Learning Edge
Deep Learning Edge
Ganesan Narayanasamy
 
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 profile
Satish Kumar
 
Build a Game in 60 minutes
Build a Game in 60 minutesBuild a Game in 60 minutes
Build a Game in 60 minutes
Troy Miles
 
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
Burkhard Stubert
 
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
Qt
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC Europe
Opersys inc.
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: Flutter
Green Custard
 
Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013
Opersys inc.
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
natdefreitas
 
Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1
Mohsen Mirhoseini
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
Marcelo Barros de Almeida
 
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
 

Similar to 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
 
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
 
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
 
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, Илья Лёвин
 

More from 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 2013
Espen Riskedal
 
Cross platform mobile design
Cross platform mobile designCross platform mobile design
Cross platform mobile design
Espen Riskedal
 
Mobile Services with Qt
Mobile Services with QtMobile Services with Qt
Mobile Services with Qt
Espen 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. intro
Espen Riskedal
 
The Scandinavian mobile app market
The Scandinavian mobile app marketThe Scandinavian mobile app market
The Scandinavian mobile app market
Espen Riskedal
 
The Mobile Market and Qt
The Mobile Market and QtThe Mobile Market and Qt
The Mobile Market and Qt
Espen Riskedal
 

More from 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
 

Recently uploaded

Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 

Recently uploaded (20)

Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 

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)

Editor's Notes

  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