BogDan Vatra and Andy Gryc. Qt on Android: Is it right for you?



Similar documents
The Most Popular UI/Apps Framework For IVI on Linux

Writing standalone Qt & Python applications for Android

An Android based Quantum GIS prototype. Ramon Carrillo, Daniel Ochoa

Integrating Mobile into Your Cross- Platform Strategy with Qt

Here to take you beyond Mobile Application development using Android Course details

Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013

Surface and Volumetric Data Rendering and Visualisation

Mobile Development with Qt

How To Develop Android On Your Computer Or Tablet Or Phone

Table of Contents. Adding Build Targets to the SDK 8 The Android Developer Tools (ADT) Plug-in for Eclipse 9

ITG Software Engineering

Introduction to Android

Cross-Platform Software Considerations for Internet of Things

HYBRID APPLICATION DEVELOPMENT IN PHONEGAP USING UI TOOLKITS

Driving the User Interface. Trends in Automotive GUIs

OpenCV on Android Platforms

Lecture 1 Introduction to Android

Practical Android Projects Lucas Jordan Pieter Greyling

A Modular Approach to Teaching Mobile APPS Development

An Introduction to Android

Overview of CS 282 & Android

Running a Program on an AVD

INTRODUCTION TO ANDROID CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 11 02/15/2011

Module Title: Software Development A: Mobile Application Development

QML and JavaScript for Native App Development

Android (Basic + Advance) Application Development

Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months

Development of mobile applications for multiple platforms

Android Basics. Xin Yang

Running Android Applications on BlackBerry 10 developer.blackberry.com/android

Developing Applications for ios

Bridging the Gap: from a Web App to a Mobile Device App

Cross-Platform Mobile Apps Solution

Introduction to Android: Hello, Android! 26 Mar 2010 CMPT166 Dr. Sean Ho Trinity Western University

Workshop on Android and Applications Development

DEVELOPING MOBILE APPLICATIONS USING ANDROID

Android Geek Night. Application framework

HTML5. Turn this page to see Quick Guide of CTTC

UNIVERSITY AUTHORISED EDUCATION PARTNER (WDP)

Beginning Nokia Apps. Development. Qt and HTIVIL5 for Symbian and MeeGo. Ray Rischpater. Apress. Daniel Zucker

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

A Guide to Mobile App Development Platforms

The Decaffeinated Robot

SYST35300 Hybrid Mobile Application Development

Example of Standard API

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android

Mobile App Design and Development

Технологии Java. Android: Введение. Кузнецов Андрей Николаевич. Санкт-Петербургский Государственный Политехнический Университет

Kerberos + Android. A Tale of Opportunity. Slide 1 / 39. Copyright 2012 yassl

Mobile Phones Operating Systems

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android

How To Develop For A Powergen 2.2 (Tegra) With Nsight) And Gbd (Gbd) On A Quadriplegic (Powergen) Powergen Powergen 3

OMX, Android, GStreamer How do I decide what to use? 15 July 2011

Reminders. Lab opens from today. Many students want to use the extra I/O pins on

TEGRA X1 DEVELOPER TOOLS SEBASTIEN DOMINE, SR. DIRECTOR SW ENGINEERING

JavaFX Session Agenda

Lee Barnes, CTO Utopia Solutions. Utopia Solutions

Android Development. Marc Mc Loughlin

Programming Mobile Apps with Python

ANDROID INTRODUCTION TO ANDROID

Android in Action. Second Edition. Revised Edition of Unlocking Android MANNING. (74 w. long.) W. FRANK ABLESON CHRIS KING ROBI SEN.

Java Application Development using Eclipse. Jezz Kelway Java Technology Centre, z/os Service IBM Hursley Park Labs, United Kingdom

HTML5 AUTOMOTIVE 2013 White Paper Series

Introduction to Android

Introduction to Android

1. Introduction to Android

Android Application Development

Extending Tizen Native Framework with Node.js

«compl*tc IDIOT'S GUIDE. Android App. Development. by Christopher Froehlich ALPHA. A member of Penguin Group (USA) Inc.

Lecture 3 Mobile App Development (Android, ios, BlackBerry, Windows Mobile) <lecturer, date>

Development Techniques for Native/Hybrid Tizen Apps. Presented by Kirill Kruchinkin

CS 528 Mobile and Ubiquitous Computing Lecture 2: Android Introduction and Setup. Emmanuel Agu

Publishing to TIZEN Using the Automated Conversion/Repackaging of Existing Android Apps. Hyeokgon Ryu, Infraware Technology, Ltd.

Mobile Application Hacking for Android and iphone. 4-Day Hands-On Course. Syllabus

Introduction to Android Development. Jeff Avery CS349, Mar 2013

Smartphone market share

CS378 -Mobile Computing. Android Overview and Android Development Environment

Android Development Tools for Eclipse

<Insert Picture Here> Java, the language for the future

Programming with Android

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

New Features in XE8. Marco Cantù RAD Studio Product Manager

Frameworks & Android. Programmeertechnieken, Tim Cocx

Android Programming and Security

Getting started with Android and App Engine

Overview. The Android operating system is like a cake consisting of various layers.

Des Moines Area Community College

Challenges in Android Application Development: A Case Study

An Introduction to Android Application Development. Serdar Akın, Haluk Tüfekçi

Hacking your Droid ADITYA GUPTA

Lab 0 (Setting up your Development Environment) Week 1

Cross-Platform Development: Target More Platforms and Devices with a Minimal Amount of Source Code

Getting Started with Android Programming (5 days) with Android 4.3 Jelly Bean

Take full advantage of IBM s IDEs for end- to- end mobile development

Open Source Telemedicine Android Client Development Introduction

Transcription:

BogDan Vatra and Andy Gryc Qt on Android: Is it right for you?

Coffee and Code sessions Free, three-hour, hands-on session that delves into the internals of Qt on Android. Learn how to: set up the Qt development environment for Android apps use Qt Creator for Android deploy systems and sign packages use JNI to access and use Android Java APIs and much more NEW YORK June 10 SAN JOSE June 12 CHICAGO June 17 www.kdab.com/qt-on-android-sessions-usa

Why Android? Quicker time to market with professional product 1,2 Powerful (and familiar) GUI that s customizable 1,4 Wide range of supported hardware & software 1,2,4 Apps: access to existing and ability to develop new 1,4 Free (with caveats), generally non GPL 2 Low-power friendly 2 Brand recognition (one billion users) 3 1 Alan Levy, Plextek, http://www.plextek.com/images/docs/android.pdf. 2 Benjamin Zores, Linux Foundation, https://.../growth-of-android-in-embedded-systems.pdf 3 Gartner, http://www.gartner.com/newsroom/id/2645115 4 Hughes Systique, http://blog.hsc.com/android-vs-linux/

Why Qt? Full C++ library with support for networking, multimedia, SQL, Bluetooth, internationalization, etc Cross-platform framework supporting Windows, Linux, OSX, Windows CE, Windows RT, Embedded Linux, QNX, vxworks, Tizen, ios, BlackBerry, and Android Hardware accelerated graphics and Javascript for widget scripting (new in Qt 5.0) Clean and easy API with excellent documentation Full featured IDE, debugger, GUI designer Commercial and LGPL licenses available

Why Qt on Android? Portability of Qt apps to Android platforms Flexible deployment strategy (mobile, desktop, embedded targets) Speed of C++ in Android environment?

Example applications Medical Home Media Enterprise Automotive Gaming In-flight entertainment Heavy machinery White goods Universal remotes Network consoles Radio receivers

Qt basics Widget toolkit and convenience classes for building cross-platform C++ apps Widgets that mimic look & feel of native controls C++ plus Meta Object Compiler (moc) for adding event management, introspection Communication of events with objects in GUI or other async uses through signals and slots QtQuick: QML (JSON-like syntax) with JavaScript for rapidly building UIs QtCreator: Qt IDE and design tool

Qt on Android terminology Necessitas = Qt on Android for Qt4, hosted by KDE Qt on Android = Qt on Android for Qt5, hosted by Qt Project Qt Platform Abstraction (QPA) formerly Lighthouse project Allows creation of Qt ports by subclassing platform classes Ministro = Android app providing Qt helper services Resolves Qt library dependencies, loads libs as needed Significantly shrinks apk; Qt libs aren t bundled per app (up to 40MB/app)

Android device Qt app 1 Ministro Qt app 2 Qt app 3 Qt app 4 Qt libs Qt libs Qt libs Architecture Qt apps with and without Ministro

How does it work? All Android apps must have a Java component Including native apps: even Android NDK and Qt Java code loads your.so and uses JNI to call into it

How does it work? All Android apps must have a Java component Including native apps: even Android NDK and Qt Java code loads your.so and uses JNI to call into it Qt on Android needs some Java Java launcher loads your application and dependencies Java plug-in acts as bridge between QPA and Android

Application packaging MyQtOnAndroidApp.apk AndroidManifest.xml libmyapp(.so) QtApplication.java QtActivity.java resources & assets Ministro.aidl OR Qt libs (.so) Qt libs (.so) Qt libs (.so) QPA.jar

What about NativeActivity? Not in existence when Necessitas was started Access to Google APIs is only through Java NativeActivity primarily designed for games where GUI controls, dialogs, menus, etc are not needed Lacking features: Soft keyboard Surface management Menus Dialogs Multimedia

Application startup Android OS gets the default Activity (QtActivity) from manifest and runs it QtActivity loads Qt libs and your application QtActivity calls the startqtapplication() function (defined in QPA Plugin) startqtapplication() searches for main() function in application symbol table startqtapplication() creates a thread that calls your main() function, then it returns

Java Android Java C++ Your Qt App Qt libs Qt QPA Java/Qt communication C++ and Java have independent threads

Threading model C++ thread Runs your application and Qt framework Handles calls from Qt down into QPA for system services Java thread Handles Android calls and Android event loop JNI calls Handle synchronization between Qt and Android framework [If you add your own JNI calls, remember the Qt loop and Android loop are running in different threads!]

Qt Creator Support for Android built-in to Qt Creator - manage, build, deploy, debug, sign - manage AVDs - edit manifest (Android Manifest Editor) Many Androidcompatible examples Pre-installation of Android development environment required

Current status Module Qt 5.2 Qt 5.3 Qt Core Qt Multimedia Qt Quick Controls Qt SQL Qt Webkit & Qt WebkitWidgets Qt Widgets Qt Network, GUI, QML, Quick, Quick Layout, Test Available (missing system semaphores and shared memory) Available (missing QWidget based controls) Available (no Android style) Available (SQLite only) Missing Small problems with some dialogs (QFontDialog, QFileDialog, etc) Available Qt Android extras Additional functionality for development on Android Added API for starting intents and getting results Qt Bluetooth Missing Available Qt Positioning Missing Available Qt OpenGL Qt Concurrent, Declarative, Graphical Effects, ImageFormats, Script, ScriptTools, SVG, XML, XMLPatterns Limited to 1 top-level widget (can t mix QGLWidget with other QWidgets) Available Ability to mix any QGLWidget with any QtWidget (QGLWidget cannot overlap)

Future roadmap Module Release Android Native WebView Qt 5.4 Android style Qt Quick Controls Qt 5.4 Qt Creator Android CMake support Qt 5.4 Qt Core, shared memory Qt 5.5 Qt Services Framework Qt 5.5

Coffee and Code sessions Free, three-hour, hands-on session that delves into the internals of Qt on Android. Learn how to: set up the Qt development environment for Android apps use Qt Creator for Android deploy systems and sign packages use JNI to access and use Android Java APIs and much more NEW YORK June 10 SAN JOSE June 12 CHICAGO June 17 www.kdab.com/qt-on-android-sessions-usa

Additional resources Qt-on-Android blog: https://www.kdab.com/category/blogs/android/ Qt-on-Android development: http://qt-project.org/wiki/qt5forandroid Ministro project: http://necessitas.kde.org/necessitas/ministro.php

BogDan Vatra Andy Gryc bogdan.vatra@kdab.com andy@cx3marketing.com Thank you