Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Realizarea de aplicații pentru
Android
utilizând Qt
Dragoş Acostăchioaie
http://www.unixinside.org
dragos@unixinside.org
Ş...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Ce este ...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Avantaje...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Pe ce pl...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
În ce li...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Ce medii...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Ce poate...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Ce poate...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Proiecta...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Ce poate...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Ce poate...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Ce poate...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Ce poate...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Qt are o...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Qt are o...
Dragoş Acostăchioaie - http://www.unixinside.org
✗ Permite execuția de aplicații Qt5 pe dispozitive care rulează Android v...
Dragoş Acostăchioaie - http://www.unixinside.org
✗ Android SDK Tools (instrumente pentru dezvoltarea și depanarea de aplic...
Dragoş Acostăchioaie - http://www.unixinside.org
✗ Executare direct pe dispozitiv. Consola de mesaje se va regăsi în QtCre...
Dragoş Acostăchioaie - http://www.unixinside.org
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QQmlCo...
Dragoş Acostăchioaie - http://www.unixinside.org
#ifndef BACKGROUND
#define BACKGROUND
#include <QObject>
class Background...
Dragoş Acostăchioaie - http://www.unixinside.org
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
...
Dragoş Acostăchioaie - http://www.unixinside.org
function afisareRezultat(stare) {
dialog.rez = stare
dialog.open()
}
Grid...
Dragoş Acostăchioaie - http://www.unixinside.org
Text { text: "Nume:" }
TextField { id: numeEdit }
Text { text: "Parola:" ...
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015
Resurse
...
Nächste SlideShare
Wird geladen in …5
×

Realizarea de aplicatii pentru Android utilizand Qt

1.339 Aufrufe

Veröffentlicht am

Realizarea de aplicatii pentru Android utilizand Qt

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

Realizarea de aplicatii pentru Android utilizand Qt

  1. 1. Realizarea de aplicații pentru Android utilizând Qt Dragoş Acostăchioaie http://www.unixinside.org dragos@unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24 - 30 august 2015
  2. 2. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce este Qt Qt. Code less. Create more. Deploy everywhere ✗ Facilitează dezvoltarea de aplicații și interfețe utilizator independente de platformă ✗ Este suportată o largă varietate de platforme desktop, mobile și embedded ✗ Nu este necesară rescrierea codului sursă ✗ Este open-source
  3. 3. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Avantaje de a folosi Qt ✗ un singur cod sursă funcţionează fără modificări pe platforme diferite (write once, run everywhere – vezi şi paradigma de portare a soluţiilor FOSS) ✗ performanţe superioare faţă de limbajele care rulează într-o maşină virtuală (ex Java), fiindcă codul binar se execută nativ, rezultând un consum semnificativ mai redus de resurse ✗ utilizează sistemul grafic al sistemului de operare pe care rulează; astfel, aplicaţiile au aspectul şi comportamentul nativ al sistemului gazdă ✗ trecerea de la un sistem de operare la altul nu necesită modificări ale codului sursă, ci doar compilarea acestuia pe fiecare platformă în parte (dacă nu s-au folosit functionalităţi/biblioteci specifice) ✗ asigură codul sursă împotriva schimbărilor viitoare ale platformelor gazdă (la nivel sursă sau binar; dezvoltatorii se pot astfel concentra pe dezvoltarea aplicaţiilor, nu pe modificările API-ului) ✗ pot fi atinse mai uşor pieţe multiple (dedicate diferitelor sisteme de operare), cu costuri mai mici de mentenanță a codului
  4. 4. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Pe ce platforme rulează Qt Platforme de tip Desktop ✗ Linux/X11, dar și alte “UNIX flavours” (FreeBSD, Solaris, HP-UX, AIX) ✗ Linux/Wayland ✗ MacOS ✗ Windows Platforme Mobile ✗ Android ✗ iOS ✗ BlackBerry Platforme Embedded ✗ Embedded Android ✗ Embedded Linux ✗ Windows Embedded, Windows CE, WinRT ✗ Real-time operating systems (ex QNX, VxWorks)
  5. 5. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 În ce limbaje putem programa folosind Qt ✗ Limbaje native: C++ și QML ✗ Poate interacționa cu alte limbaje (engl. language bindings): Java (QtJambi), Ruby, C#, C++11 ✗ Limbaje de scripting suportate: QML (nativ), JavaScript, Phyton
  6. 6. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce medii integrate sunt compatibile cu Qt ✗ Qt Creator ✗ Eclipse ✗ Microsoft Visual Studio
  7. 7. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce poate face Qt Creator ✗ Gestiunea proiectului ✗ Editarea codului sursă ✗ Controlul versiunilor ✗ Proiectarea interfeței ✗ Help integrat ✗ Generarea codului binar ✗ Depanarea aplicaţiei ✗ Publicarea aplicației
  8. 8. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce poate face Qt Creator Vrăjitor (wizard) pentru proiecte Qt ✗ realizează proiecte noi Qt ✗ generează automat proiectul şi fişierele de bază Editor avansat de cod sursă C++/QML/Javascript ✗ syntax highlighting ✗ completare automată a codului ✗ marcarea automată a erorilor de sintaxă în timpul editării ✗ auto-indentare ✗ posibilitatea de expandare/restrângere a funcţiilor ✗ căutare incrementală a cuvintelor-cheie în timpul editării ✗ comutarea uşoară între declaraţia şi definiţia unei metode ✗ posibilitatea de a face semne de carte în cadrul codului sursă ✗ posibilitatea de a lucra fără mouse şi de a deschide ferestre de editare multiple
  9. 9. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Proiectarea interfeței utilizator cu Qt Creator Qt Designer ✗ Utilizat pentru proiectarea interfeței utilizator a aplicațiilor pe platforme desktop ✗ Se bazează pe editarea de widget-uri și form-uri ✗ Permite utilizarea mecanismului de semnale și sloturi ✗ Interfața utilizator este salvată în fișiere XML Qt Quick Designer ✗ Utilizat pentru proiectarea interfeței utilizator a aplicațiilor pe platforme mobile ✗ Permite două moduri de lucru, editare și design
  10. 10. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce poate face Qt Creator Help pentru biblioteca Qt integrat ✗ poate fi accesat în timpul editării prin poziţionarea pe un cuvânt-cheie Sistem de compilare a proiectului ✗ prin intermediul sistemului qmake (propriu Qt) sau prin Cmake Sistem de gestiune a fişierelor din proiect ✗ permite localizarea uşoară a unui fişier din proiect după tipul şi numele acestuia Sisteme de control al versiunilor ✗ sunt suportate: Git, Subversion (SVN), CVS şi Perforce
  11. 11. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce poate face Qt Creator Compilarea aplicației ✗ Sunt suportate gcc şi gdb, precum și Microsoft Visual Studio compiler ✗ Pot fi stabilite individual configurările pentru fiecare platformă în parte și se poate comuta rapid între platforme ✗ Se pot crea versiuni diferite ale proiectului, pentru a păstra separat codul sursă dependent de platformă ✗ Generează automat pachetele care vor transferate pe dispozitivul mobil în vederea executării aplicației direct pe acesta
  12. 12. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce poate face Qt Creator Depanarea aplicației ✗ pot fi stabilite puncte de întrerupere, rula aplicaţia linie-cu-linie sau instrucţiune-cu- instrucţiune, examina conţinutul variabilelor locale şi globale ✗ Permite depanarea inclusiv a funcțiilor Javascript ✗ Dacă aplicația este testată direct pe dispozitivul mobil sau în emulator, mesajele vor apărea în consola QtCreator ✗ Dacă se stabilesc puncte de oprire (breakpoints), în consola QML/Javascript pot fi executate expresii Javascript ✗ În timpul execuției, poate fi explorată structura obiectelor
  13. 13. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce poate face Qt Creator Publicarea aplicației ✗ Permite crearea pachetelor necesare publicării aplicației pentru dispozitive mobile, utilizând magazinele de aplicații (Apple Store, Google Play) Qt Installer ✗ arhitectură care oferă un set de instrumente şi utilitare pentru realizarea de sisteme de instalare ale aplicaţiilor ✗ funcţionează pe Linux, MacOS şi Windows şi au aspectul nativ al platformei utilizate ✗ sistemul de instalare este configurabil, putându-se adăuga noi widget-uri şi crea scripturi pentru a realiza operaţiuni noi ✗ sistemul de instalare poate fi offline (conţin toate componentele necesare) sau online (conţinutul poate fi descărcat de pe un server Web) ✗ oferă şi posibilitatea de actualizare ulterioară a conţinutului aplicaţiei http://doc.qt.io/qt-5/publishtogoogleplay.html
  14. 14. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Qt are o structură modulară http://doc.qt.io/qt-5/qtmodules.html Qt Essentials ✗ Qt Core - provides core non-GUI functionality ✗ Qt GUI - provides the basic enablers for graphical applications ✗ Qt Multimedia - provides audio, video, radio and camera functionality ✗ Qt Network - provides classes to make network programming easier and portable ✗ Qt QML - classes for QML and JavaScript languages ✗ Qt Quick - provides classes for embedding Qt Quick2 in Qt/C++ applications ✗ Qt SQL - provides a driver layer, SQL API layer, and a user interface layer for SQL db ✗ Qt Test - classes for unit testing Qt applications and libraries ✗ Qt WebKit - provides a web browser engine (WebKit2) ✗ Qt Widgets - extends Qt GUI with C++ widget functionality
  15. 15. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Qt are o structură modulară http://doc.qt.io/qt-5/qtmodules.html Qt Add-ons ✗ Qt Bluetooth – enables basic Bluetooth operations ✗ Qt D-Bus - Inter-Process Communication using the D-Bus protocol (UNIX-only) ✗ Qt Graphical Effects - graphical effects for use with Qt Quick 2 ✗ Qt Image Formats - plugins for additional image formats ✗ Qt OpenGL - offers classes that make it easy to use OpenGL ✗ Qt Positioning - provides positioning information ✗ Qt Print Support - provides classes to make printing easier and portable ✗ Qt Sensors - Provides classes for reading sensor data ✗ Qt Serial Port - classes that enable access to a serial port ✗ Qt Script - provides classes for making Qt applications scriptable ✗ Qt Script Tools ✗ Qt SVG - provides functionality for handling SVG images ✗ Qt XML - implementations of SAX and DOM ✗ Qt XML Patterns - support for XPath, XQuery, XSLT and XML schema validation
  16. 16. Dragoş Acostăchioaie - http://www.unixinside.org ✗ Permite execuția de aplicații Qt5 pe dispozitive care rulează Android v2.3.3 sau mai nouă ✗ Sunt suportate toate modulele Qt, exceptând Qt WebKit, Qt NFC, Qt SerialPort și cele specifice unor platforme (Qt MacExtras, Qt WindowsExtras, Qt X11Extras) Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce este Qt pentru Android http://doc.qt.io/qt-5/android-support.html
  17. 17. Dragoş Acostăchioaie - http://www.unixinside.org ✗ Android SDK Tools (instrumente pentru dezvoltarea și depanarea de aplicații Android) ✗ Android NDK (permite dezvoltarea de cod pentru Android in C/C++) ✗ Apache Ant v1.8 sau mai nouă (instrumente pentru generarea de aplicații Android) ✗ Java SE Development Kit (JDK) v6 sau mai nouă. Pe Linux putem utiliza și OpenJDK ✗ pe Windows, este necesar și Android Debug Bridge (ADB) driver Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Ce ne trebuie http://doc.qt.io/qt-5/androidgs.html
  18. 18. Dragoş Acostăchioaie - http://www.unixinside.org ✗ Executare direct pe dispozitiv. Consola de mesaje se va regăsi în QtCreator. Înainte de conectarea prin USB a dispozitivului, trebuie activat USB Debugging pe acesta ✗ Executare pe calculator. Poate fi aleasă platforma pe care se compilează/execută proiectul. ✗ Executare în emulator Android. În prealabil trebuie creat un AVD (Android Virtual Device) și stabilite proprietățile dispozitivului virtual. Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Cum executăm aplicația Android doc.qt.io/qtcreator/creator-developing-android.html
  19. 19. Dragoş Acostăchioaie - http://www.unixinside.org #include <QApplication> #include <QQmlApplicationEngine> #include <QQmlContext> #include "background.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QQmlApplicationEngine engine; // încărcare componentă vizuală engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); Background backgrd; // expunere C++ la QML engine.rootContext()->setContextProperty("app", &backgrd); return app.exec(); } Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Exemplu de aplicație Android
  20. 20. Dragoş Acostăchioaie - http://www.unixinside.org #ifndef BACKGROUND #define BACKGROUND #include <QObject> class Background : public QObject { Q_OBJECT public: inline Background(QObject *parent = 0) : QObject(parent) { } // apelabilă din QML Q_INVOKABLE inline bool autentificare(const QString &nume, const QString &parola) { return (nume == "admin" && parola == "admin"); } }; #endif // BACKGROUND Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Exemplu de aplicație Android
  21. 21. Dragoş Acostăchioaie - http://www.unixinside.org import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.1 ApplicationWindow { title: "Autentificare" width: 640 height: 480 visible: true MessageDialog { id: dialog title: "Mesaj" icon: StandardIcon.Question // proprietate atașată (binding) - se actualizează la schimbarea valorii text: "Rezultat autentificare: " + rez standardButtons: StandardButton.Ok property string rez } Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Exemplu de aplicație Android
  22. 22. Dragoş Acostăchioaie - http://www.unixinside.org function afisareRezultat(stare) { dialog.rez = stare dialog.open() } GridLayout { anchors.centerIn: parent columns: 2 rows: 4 Text { text: "Autentificare" Layout.columnSpan: 2 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter } Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Exemplu de aplicație Android
  23. 23. Dragoş Acostăchioaie - http://www.unixinside.org Text { text: "Nume:" } TextField { id: numeEdit } Text { text: "Parola:" } TextField { id: parolaEdit; echoMode: TextInput.Password } Item { Layout.fillWidth: true } Button { text: "OK" Layout.alignment: Qt.AlignRight | Qt.AlignVCenter onClicked: { var result = app.autentificare(numeEdit.text, parolaEdit.text) afisareRezultat(result ? "Succes" : "Esuata") } } } } Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Exemplu de aplicație Android
  24. 24. Dragoş Acostăchioaie - http://www.unixinside.org Şcoala de vară “Informatică la castel”, Macea, 24-29 august 2015 Resurse ✗ Qt documentation - http://qt-project.org/doc/ ✗ Mark Summerfield books - http://www.qtrac.eu/marksummerfield.html ✗ Learning Qt videos - https://www.ics.com/learning/icsnetwork

×