<<

TECH AND TOOLS MOBILE APPLICATION DEVELOPMENT USING MOBILE APPLICATION DEVELOPMENT USING QT AGENDA

1. Mobile OS for users and developers 2. Technologies overview 3. Introducing Qt 4. Tools 5. General project structure and MOBILE APPLICATION DEVELOPMENT USING QT FOR USERS

…?

Market: 1.5 billion devices per year MOBILE APPLICATION DEVELOPMENT USING QT MOBILE DEVICE FOR USERS

Communication: phone, messages Multimedia capture and playing Browser Date/time: watch, alarm clocks, reminders, calendar Personal digital assistant Games Toy for geeks The need to constantly take care of charge level and signal strength Market: 1.5 billion devices per year MOBILE APPLICATION DEVELOPMENT USING QT MOBILE OS FOR USERS

…? MOBILE APPLICATION DEVELOPMENT USING QT MOBILE OS FOR USERS

iOS / Apple www.apple.com/ios Focus on UX, marketing and services that controls Nice looking UI and expensive devices the device Android / www.android.com The most widespread mobile OS (> 80%) Toolbox for Huge number of apps and a lot of advertising device management Sailfish OS / sailfishos.org Joy for geeks Gesture oriented UX, full multitasking User community Respect for the data privacy Sailfish Mobile OS RUS omprussia.ru ● B2B and B2G, MDM features and Russian GOSTs MOBILE APPLICATION DEVELOPMENT USING QT IOS HISTORY 1988 — NeXTSTEP beta 2001 — OS X 10.0 2007, January 9 — iPhone presentation at Macworld Conference & Expo 2007, June — iPhone 2G release with iPhone OS 2007, September — iPod touch announce 2008, July 10 — iOS opening with 500 applications 2010, January 12 — iPad announce 2010, June — iPhone OS rebranding as iOS MOBILE APPLICATION DEVELOPMENT USING QT ANDROID HISTORY

2003, October — Android Inc. foundation by Andy Rubin, Rich Miner, Nick Sears, and Chris White 2004 — orientation to mobile devices 2005, July — Google acquires Android Inc. for at least $50 million 2005, November 5 — created 2008, September 23 — HTC Dream with Android 1.0 2009, April — screen rotation, capture, widgets, screen keyboard and cupcake codename 2010, January — Nexus One MOBILE APPLICATION DEVELOPMENT USING QT SAILFISH OS HISTORY

Maemo Mer Sailfish Mobile OS RUS MerProject Открытая Мобильная Платформа

Sailfish OS Jolla

Moblin MeeGo Nokia + Intel

2007 2010 2012 2016 MOBILE APPLICATION DEVELOPMENT USING QT MOBILE DEVICE FOR DEVELOPERS

…? MOBILE APPLICATION DEVELOPMENT USING QT MOBILE DEVICE FOR DEVELOPERS

Operating system Technical specifications Multimedia features Network connections Available sensors Target audience The need to constantly take care of energy consumption and available networks MOBILE APPLICATION DEVELOPMENT USING QT MOBILE OS FOR DEVELOPERS

…? MOBILE APPLICATION DEVELOPMENT USING QT MOBILE OS FOR DEVELOPERS iOS XNU hybrid kernel Architecture POSIX-compatible Darwin components UI/UX Apple infrastructure API Android Development tools kernel with bionic for HAL and userspace Documentation Java bytecode in virtual machine, native API Publication tools Google infrastructure Developer community Sailfish OS Full-featured Linux Licenses Bionic library for HAL, POSIX-compatible userspace Independent portable infrastructure MOBILE APPLICATION DEVELOPMENT USING QT IOS/MACOS ARCHITECTURE

xakep.ru/2014/10/08/kau-ustroena-/ MOBILE APPLICATION DEVELOPMENT USING QT ANDROID ARCHITECTURE

developer.android.com/guide/platform/ MOBILE APPLICATION DEVELOPMENT USING QT SAILFISH OS ARCHITECTURE

SILICA COMPONENTS MULTIMEDIA VIRTUAL KEYBOARD GSTREAMER, PULSEAUDIO... QT 5

CONNECTIVITY CONNMAN, OFONO, WPA_SUPPLICANT, BLUEZ, OBEXD, USB-MODED...

SYSTEM LIBRARIES SYSTEMD, DBUS, MCE, DSME, NGFD, TIMED, OHMD, SENSORD, STATEFS, SOCIALD, TRACKER, DCONF, ONESHOT, UDEV...

GRAPHICS ESSENTIALS SOFTWARE MANAGEMENT WAYLAND GLIBC, LIBSTD++… RPM, LIBZYPP, PACKAGEKIT

LIBHYBRIS NATIVE SAILFISH ANDROID HAL PHONE (RIL), SENSORS, GRAPHICS, NFC, KERNEL, BT, DROID-HAL-INIT AUDIO, (OPENGL ES) CAMERA, VIDEO BATTERY, WLAN

sailfishos.org/wiki/Architecture MOBILE APPLICATION DEVELOPMENT USING QT TECHNOLOGIES OVERVIEW

OS specific technologies Android: Android Studio (Java, /C++, Kotlin) developer.android.com/studio iOS: Xcode (Objective-C, Swift) developer.apple.com Sailfish OS: Sailfish OS SDK (C/C++, QML, Python) sailfishos.org/wiki/Application_Development Cross-platform technologies MOBILE APPLICATION DEVELOPMENT USING QT CROSS-PLATFORM TECHNOLOGIES

WEB-based frameworks (JavaScript, HTML 5, CSS) React Native facebook.github.io/react-native jQuery Mobile jquerymobile.com PhoneGap phonegap.com Bootstrap getbootstrap.com Common WEB technologies, low entry threshold, quick development Low productivity, some API limitations Xamarin (C#) visualstudio..com/xamarin Common .NET technologies as one more virtual machine in runtime Qt (C++, QML, JavaScript) www.qt.io Efficient native applications with declarative UI MOBILE APPLICATION DEVELOPMENT USING QT QT AS A POPULAR FRAMEWORK Developer community is more than 1 000 000 MOBILE APPLICATION DEVELOPMENT USING QT QT HISTORY 1991 — Quasar Technologies (Trolltech in the future) starts Qt dev for and Windows 1995, May 20 — Qt 0.90 release under Qt Free Edition License 1998, July 12 — KDE 1.0 release, Qt license changes to 2000 — Qt/X11 2.2 release under the GPL v2 2001 — Qt 3.0 release with Mac OS X support 2005, June — Qt 4.0 release with full support for 2008, June 17 — Nokia acquires Trolltech 2009, January 14 — Qt 4.5 release with LGPL option 2010, June 23 — Nokia Qt SDK 1.0 release with and support 2011, March — Nokia sales Qt licensing and services to Digia to support mobile platforms 2012, Audust — Digia acquires Qt from Nokia 2012, October — Qt 5.0 release with hw-accelerated graphics, major role of QML and JS 2013, November 27 — Qt-based Sailfish OS 1.0.0.5 release 2014, September — Digia creates Qt Company 2016, May — Qt Company is independent from Digia, Qt 5 moved to open governance MOBILE APPLICATION DEVELOPMENT USING QT QT CONCEPTS

Code less, create more, deploy everywhere Abstraction of the GUI Platform-oriented UI/UX Common business logic A convenient way to send and process information about events Ability to monitor the value of properties Metaobject compiler Interprets macros from the C++ code as annotations Generates added source code with meta information Provide programming features not available natively in C++ MOBILE APPLICATION DEVELOPMENT USING QT QT MODULES

QT ESSENTIALS Qt Add-Ons Qt Network Qt Core Controls 2 Active Qt Qt Speech Authorization Qt GUI Qt Quick Dialogs Qt 3D Qt NFC Qt SVG Qt Multimedia Qt Quick Layouts Qt Android Extras Qt Platform Headers Qt UI Tools Qt Multimedia Widgets Qt Quick Test Qt Qt Positioning Qt WebChannel Qt Network Qt SQL Qt Canvas 3D Qt Print Support Qt WebEngine Qt QML Qt Test Qt Concurrent Qt Purchasing Qt WebSockets Qt Quick Qt Widgets Qt D-Bus Qt Quick Controls Qt WebView Qt Gamepad Qt Quick Extras Qt Windows Extras Qt Graphical Effects Qt Quick Widgets Qt X11 Extras Qt Help Qt SCXML Qt XML Qt Image Formats Qt Sensors Qt XML Patterns Qt Location Qt Serial Bus Qt Wayland Qt Mac Extras Qt Serial Port Compositor

doc.qt.io/qt-5/qtmodules. MOBILE APPLICATION DEVELOPMENT USING QT QT API FOR MOBILE SOFT

UI elements and controls Models and views File system Databases Multimedia playing and capture Geolocation and coordinates Sensors Network connections Interaction of applications and OS services Multithreading MOBILE APPLICATION DEVELOPMENT USING QT QT FOR MOBILE PLATFORMS

Qt SDK: www.qt.io/download (build tools for host OS) Qt for Android: doc.qt.io/qt-5/android-support.html Qt SDK Android SDK Tools: developer.android.com/sdk/index.html Android NDK: developer.android.com/ndk Java SE DK: www.oracle.com/technetwork/java/javase/downloads Qt for iOS: doc.qt.io/qt-5/ios-support.html Qt SDK Xcode: itunes.apple.com/us/app/xcode/id497799835 Sailfish OS Sailfish OS SDK: sailfishos.org/wiki/Application_SDK_Installation MOBILE APPLICATION DEVELOPMENT USING QT QT SDK COMPONENTS IDE Build tools and targets Source code analizers Qt Linguist Qt Designer Documentation and context help Examples and guides Emulator (Sailfish OS SDK, Android SDK) Qt QML Live (Sailfish OS SDK) MOBILE APPLICATION DEVELOPMENT USING QT QT CREATOR MODES

Welcome: resent projects, examples, tutorials

Edit: source code editor

Design: visual UI editor

Debug: additional view with current step and variable values

Projects: build and run settings

Sailfish OS: Sailfish OS specific settings

Help: documentation MOBILE APPLICATION DEVELOPMENT USING QT BUILD AND RUN TOOLS

Build and targets settings

Run, debug and build

Sailfish OS Build Engine status and management

Sailfish OS Emulator status and management MOBILE APPLICATION DEVELOPMENT USING QT CREATE OR OPEN PROJECT

From basic template Welcome → Projects → New Project → Example Welcome → Examples → Open existing project Welcome → Projects → Open Project →