Tech and Tools Mobile Application Development Using Qt Mobile Application Development Using Qt Agenda
Total Page:16
File Type:pdf, Size:1020Kb
TECH AND TOOLS MOBILE APPLICATION DEVELOPMENT USING QT 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 qmake MOBILE APPLICATION DEVELOPMENT USING QT MOBILE DEVICE 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 Software that controls Nice looking UI and expensive devices the device Android / Google www.android.com Firmware The most widespread mobile OS (> 80%) Toolbox for Huge number of apps and a lot of advertising device management Sailfish OS / Jolla 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 2G presentation at Macworld Conference & Expo 2007, June — iPhone 2G release with iPhone OS 2007, September — iPod touch announce 2008, July 10 — iOS App Store 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 — Open Handset Alliance created 2008, September 23 — HTC Dream with Android 1.0 2009, April — screen rotation, video 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 Nokia MerProject Открытая Мобильная Платформа Sailfish OS Jolla Moblin MeeGo Intel 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 Linux kernel with bionic library 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-ios/ 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... MALIIT 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/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.microsoft.com/xamarin Common .NET technologies Mono 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 Unix 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 Q Public License 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 free software 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 S60 and Maemo 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 Signals and slots 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 Qt Quick 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 Bluetooth 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.html 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 Qt Creator 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 → <project type> Example Welcome → Examples → <example> Open existing project Welcome → Projects → Open Project → <select .pro file> In Sailfish OS SDK project files must be in user home directory or alternate directory specified during SDK installation MOBILE APPLICATION DEVELOPMENT USING QT PROJECT TYPES Application Library Other Qt Console C++ Library Unit Test Qt Widgets Qt Quick 2 Extension Plugin Auto Test Qt Quick Qt Creator Plugin Subdirs Empty, Scroll, Stack, Swipe, Empty qmake Canvas 3D Sailfish OS Qt Quick Application Sailfish OS Qt Quick Application (QML Only) MOBILE APPLICATION DEVELOPMENT USING QT