Български English

Как се създават и пускат Qt приложения на Android

Чрез Necessitas [developer.qt.nokia.com] Qt SDK програмистите имат възможност да пускат Qt приложения на устройства с Android. Това кратко ръководство ще покаже основните стъпки, за да се направи проста Qt програма за Android.

Изисквания

  • Инсталиран Necessitas SDK
  • Android устройство

Инструкции

  1. Стартирайте Qt Creator от Necessitas Qt SDK
  2. Натиснете File > New file or project… и следвайте инструкциите
  3. Изберете Qt Widget Project и Qt Gui Application
  4. Въведете име на проекта и път до неговата директория
  5. Изберете Android като Target
  6. След като проектът е създаден отворете Projects и се убедете, че настройките за Build и Run са правилно конфирирани.
  7. Редактирайте програмния код и когато сте готови пуснете приложението на Android устройство.

Съвети

  • За да промените общата информация за приложението, манифест файла за Android, разрешенията за Android или списъка на библиотеки отидете в Projects > Run Settings > Package configuration > Details.
  • За селектирате подходящо Android SDK, което искате да използвате от Qt Creator отидете в Projects > Run Settings > Package configuration > Details > Manifest.
  • За да промените конфигурацията за поставяне на проекта от Qt Creator отидете в Projects > Run Settings > Configuration configuration > Details.

Програмен код

Както можете да видите програмния код не съдържа нищо специфично само за Android, което го прави напълно преносим. Някой допълнителни файлове, които са неодходими за necessitas са добавени в pro файла на проекта.

  • test.pro

  1. QT       += core gui
  2.  
  3. TARGET = test
  4. TEMPLATE = app
  5.  
  6.  
  7. SOURCES += main.cpp\
  8.         mainwindow.cpp
  9.  
  10. HEADERS  += mainwindow.h
  11.  
  12. FORMS    += mainwindow.ui
  13.  
  14. CONFIG += mobility
  15. MOBILITY =
  16.  
  17. OTHER_FILES += \
  18.     android/AndroidManifest.xml \
  19.     android/res/drawable-hdpi/icon.png \
  20.     android/res/drawable-ldpi/icon.png \
  21.     android/res/drawable-mdpi/icon.png \
  22.     android/res/values/libs.xml \
  23.     android/res/values/strings.xml \
  24.     android/src/eu/licentia/necessitas/industrius/QtActivity.java \
  25.     android/src/eu/licentia/necessitas/industrius/QtApplication.java \
  26.     android/src/eu/licentia/necessitas/industrius/QtLayout.java \
  27.     android/src/eu/licentia/necessitas/industrius/QtSurface.java \
  28.     android/src/eu/licentia/necessitas/ministro/IMinistro.aidl \
  29.     android/src/eu/licentia/necessitas/ministro/IMinistroCallback.aidl \
  30.     android/src/eu/licentia/necessitas/mobile/QtAndroidContacts.java \
  31.     android/src/eu/licentia/necessitas/mobile/QtCamera.java \
  32.     android/src/eu/licentia/necessitas/mobile/QtFeedback.java \
  33.     android/src/eu/licentia/necessitas/mobile/QtLocation.java \
  34.     android/src/eu/licentia/necessitas/mobile/QtMediaPlayer.java \
  35.     android/src/eu/licentia/necessitas/mobile/QtSensors.java \
  36.     android/src/eu/licentia/necessitas/mobile/QtSystemInfo.java

  • main.cpp

  1. #include <QtGui/QApplication>
  2. #include "mainwindow.h"
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication a(argc, argv);
  7.     MainWindow w;
  8. #if defined(Q_WS_S60)
  9.     w.showMaximized();
  10. #else
  11.     w.show();
  12. #endif
  13.  
  14.     return a.exec();
  15. }

  • mainwindow.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3.  
  4. #include <QMainWindow>
  5. #include <QLabel>
  6.  
  7. namespace Ui {
  8.     class MainWindow;
  9. }
  10.  
  11. class MainWindow : public QMainWindow
  12. {
  13.     Q_OBJECT
  14.  
  15. public:
  16.     explicit MainWindow(QWidget *parent = 0);
  17.     ~MainWindow();
  18.  
  19. private:
  20.  
  21.     // from QMainWindow
  22.     void resizeEvent(QResizeEvent* event);
  23.  
  24. private:
  25.  
  26.     QLabel* m_pLabel;
  27. };
  28.  
  29. #endif // MAINWINDOW_H

  • mainwindow.cpp

  1. #include "mainwindow.h"
  2.  
  3. #include <QApplication>
  4. #include <QDesktopWidget>
  5. #include <QtCore/QCoreApplication>
  6.  
  7. MainWindow::MainWindow(QWidget *parent) :
  8.     QMainWindow(parent),
  9.     m_pLabel(NULL)
  10. {
  11.     m_pLabel = new QLabel("Hello Qt for Android!", this);
  12.     m_pLabel->setGeometry(QApplication::desktop()->screenGeometry());
  13.     m_pLabel->setAlignment(Qt::AlignCenter);
  14.     m_pLabel->setStyleSheet("background-color:#006600; color:#FFFFFF");
  15. }
  16.  
  17. MainWindow::~MainWindow()
  18. {
  19.  
  20. }
  21.  
  22. void MainWindow::resizeEvent(QResizeEvent* /*event*/)
  23. {
  24.     m_pLabel->setGeometry(QApplication::desktop()->screenGeometry());
  25. }

Тестване

Свържете вашето устройство към компютър и пуснете приложението от Qt Creator към Necessitas. Qt приложението автоматилно ще се стартира на Android устройството. Може би ще бъдете попитани да свалите зависимости чрез Ministro. Следвайте инструкциите, за да свалите всички необходими компоненти.

Тази примерна програма е успешно тествана на LG GT540 Optimus [gsmarena.com] с Android 2.1.

Вижте също

How to use Necessitas 0.2.1 Emulator on Windows 7 [developer.qt.nokia.com]
How to write Qt apps for Android [sourceforge.net] to write Qt apps for Android/
Setup QtCreator [sourceforge.net] QtCreator/
How to install Necessitas SDK [sourceforge.net] to install Necessitas SDK/

Categories: