SlideShare uma empresa Scribd logo
1 de 73
Baixar para ler offline
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)

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Destaque

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
 

Destaque (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
 

Semelhante a 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
 

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

Mais 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
 

Mais 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
 

Último

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Último (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

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)

Notas do Editor

  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