Kurs Qt – #3 – pierwsza aplikacja mobilna na Androida

Kurs Qt – #3 – pierwsza aplikacja mobilna na Androida

Za nami podstawy pisania aplikacji na PC. Udało się nam już również skomunikować przez UART z popularnym Arduino UNO. Teraz czas, aby zająć się aplikacjami mobilnymi.

Zaczniemy oczywiście od instalacji narzędzi oraz krótkiej ich konfiguracji. Następnie przygotujemy pierwszą, ekstremalnie prostą aplikację mobilną.


W tej części kursu zajmiemy się konfiguracją i instalacją narzędzi Qt potrzebnych do budowy aplikacji na platformę Android. Następnie wykonamy prostą aplikację i zainstalujemy ją na telefonie. Ważne jest jednak, że chcąc wykorzystać Qt do budowy aplikacji dla Androida, nasze docelowe urządzenie (telefon, tablet) musi mieć wersję Androida 4.1 (API level 16) lub wyższą.

Konfiguracja Qt

Konfiguracja narzędzi do budowania aplikacji na Androida jest procesem, który może przynieść kilka problemów. Jest to spowodowane niekompatybilnymi wersjami różnych narzędzi. Nie gwarantujemy, że zaproponowane tutaj wersje narzędzi zadziałają u każdego. Nasze testy zostały przeprowadzone na "czystym" Windowsie 10 z podanymi dalej wersjami narzędzi i całość działa bez żadnego problemu.

Konfiguracja sprowadza się do zainstalowania kilku narzędzi. Ważny jest również etap instalacji Qt, podczas którego musimy zainstalować narzędzia dla Androida (zrobiliśmy to w części pierwszej kursu).

Dodatkowo, potrzebne będą takie narzędzia jak:

  • JDK (Java Developer Kit)
  • Android SDK (Android Software Development Kit)
  • Android NDK (Android Native Development Kit)
  • Gradle, jeśli instalujemy Qt w wersji 5.9 (lub wyższej) to Gradle zostanie zainstalowane automatycznie podczas instalacji samego Qt. Nie musimy więc robić tego osobno.

Zaczynamy od uruchomienia Qt Creatora. Następnie klikamy w Narzędzia > Opcje, a w nowym oknie wybieramy Urządzenia > Android. W tym miejscu będziemy musieli podać ścieżki JDK, SDK oraz NDK, które za chwilę zainstalujemy. Okno Qt Creatora zostawiamy więc w tle i idziemy dalej.

Instalacja JDK

Zaczynamy od instalacji JDK w wersji 8 lub niższej, instalator znaleźć można na stronach Oracle (nie instalujemy wersji wyższej niż 8, ponieważ może to implikować problemy z SDK). Na liście instalatorów szukamy nagłówka Java SE Development Kit X, gdzie X to wersja JDK. Następnie akceptujemy licencję i pobieramy wersję odpowiednią dla naszego systemu.

Akceptacja licencji JDK i pobieranie odpowiedniej wersji

Akceptacja licencji JDK i pobieranie odpowiedniej wersji

Uruchamiamy instalację, a następnie w jednym z okien kreatora definiujemy położenie JDK. Polecam stworzyć nowy katalog np. Android/JDK/jdk_wersja i tam zainstalować JDK. U mnie ścieżka ta wyglądała w poniższy sposób (gdzie dk1.8.0_191 jest głównym katalogiem, w którym znajdują się pliki JDK):

Twoja wersja może się różnić od powyższej (może to być związane z innym wydaniem JDK), nie jest to w tej chwili istotne. Ważne, aby była to wersja z rodziny 8 lub niższa czyli: jdk1.8xxxx.

Po zakończeniu instalacji, wracamy do Qt Creatora i wskazujemy położenie JDK. Jeśli wszystko będzie zrobione poprawnie to od razu otrzymamy informację zwrotną świadczącą o sukcesie:

Wskazanie ścieżki JDK w QT Creator i pozytywna informacja zwrotna

Wskazanie ścieżki JDK w QT Creator i pozytywna informacja zwrotna

Instalacja SDK

Najwygodniej SDK zainstalować jest za pośrednictwem Android Studio, które podczas swojej instalacji (lub pierwszego uruchomienia) pobierze potrzebne narzędzia. Przechodzimy więc do wgrywania:

Informacja na temat dodatkowo instalowanych SDK

Informacja na temat dodatkowo instalowanych SDK

W uruchomionym Android Studio szukamy przycisku Configure i z menu wybieramy SDK Manager.

Lokalizacja opcji SDK Manager

Lokalizacja opcji SDK Manager

U góry nowego okna znajdziemy położenie SDK, które kopiujemy do schowka. Następnie wybieramy zakładkę SDK Tools i zaznaczamy opcję Google USB Driver (u mnie była już zainstalowana). Następnie klikamy Apply, aby Android Studio pobrało i zainstalowało sterowniki potrzebne do debugowania.

Informacje na temat ścieżki SDK oraz instalacji sterowników

Informacje na temat ścieżki SDK oraz instalacji sterowników

Następnie wracamy do Qt Creatora i podajemy położenie SDK. Część narzędzi powinna zostać wtedy potwierdzona przez Qt. Ostateczny efekt powinien być następujący:

Poprawne uzupełnienie ścieżki, w której znajduje się SDK

Poprawne uzupełnienie ścieżki, w której znajduje się SDK

Czasami może się zdarzyć, że naszym oczom ukarze się taki, mniej pozytywny, widok:

Błędne informacje na temat potrzebnych narzędzi

Błędne informacje na temat potrzebnych narzędzi

Musimy upewnić się wtedy, czy na pewno za pomocą Android Studio, zainstalowaliśmy odpowiednie narzędzia. Pomocne może być również zrestartowanie Qt Creatora (lub otwartego okna narzędzi).

Instalacja NDK

Ostatnie potrzebne narzędzie to Android NDK. W moim przypadku wybrałem i zainstalowałem wersję 18b, co zakończyło się fiaskiem - Qt nie wykrywało kompilatorów dla Androida.

Wybieramy odpowiednią wersję i wypakowujemy ją w folderze obok SDK. W moim przypadku było to:

W konsekwencji dostaniemy coś na wzór:

Gdzie, android-ndk-r17c jest głównym katalogiem plików NDK, który podajemy Qt jako położenie NDK. Następnie wracamy do Qt Creatora i podajemy odpowiednią ścieżkę. Efekt powinien być taki:

Efekt poprawnej instalacji NDK

Efekt poprawnej instalacji NDK

Przykład błędnego wybrania wersji narzędzia

W moim przypadku problem polegał na wybraniu złego NDK. Przykładowo, po wskazaniu wersji 18b, narzędzia Qt wyglądały w poniższy sposób:

Lista dostępnych narzędzi

Lista dostępnych narzędzi

Zakładka Wersje Qt również "świeciła wtedy na czerwono":

Błąd wersji Qt

Błąd wersji Qt

Na liście dostępnych kompilatorów brak było informacji na temat Androida:

Ograniczona lista kompilatorów

Ograniczona lista kompilatorów

Następnie wybrałem wersję 17c, która zadziałała u mnie poprawnie. Przy takiej konfiguracji zestawy dostępnych pozostały takie same. Natomiast w zakładce Wersje Qt zniknęły już błędy:

Poprawny widok dostępnych wersji Qt

Poprawny widok dostępnych wersji Qt

Największe zmiany widoczne były jednak na zakładce Kompilatory, gdzie znalazło się znacznie więcej kompilatorów (część z nich była właśnie dla Androida):

Dłuższa lista dostępnych kompilatorów

Dłuższa lista dostępnych kompilatorów

Pierwsza aplikacja na Androida

Jeśli wszystko poszło dobrze, to teraz będziemy mogli tworzyć projekty dla różnych zestawów narzędzi, czyli Desktop i Android (dla różnych architektur). Pora na pierwszą aplikację. Tworzymy nowy projekt (tak jak w poprzednich częściach), ale zatrzymajmy się jednak przy wyborze zestawów narzędzi:

Lista dostępnych zestawów narzędzi

Lista dostępnych zestawów narzędzi

Zauważ, że u mnie, na powyższej liście, zduplikowały się narzędzia. Stało się tak zapewne dlatego, że Qt tworzyło nowe zestawy narzędzi, gdy testowo zmieniałem NDK. Gdybyś doświadczył podobnej sytuacji to wybierz wszystkie zestawy (jak na powyższym zrzucie ekranu).

Pora na zbudowanie interfejsu pierwszej aplikacji mobilnej. Chcemy testowo uruchomić cokolwiek, więc każdy może umieścić na ekranie dowolne elementy. Ja stworzyłem taki, przykładowy interfejs:

Pierwszy, testowy interfejs

Pierwszy, testowy interfejs

Teraz, próbujemy taką aplikację uruchomić na komputerze. Upewniamy się tylko, że będziemy budować aplikację na PC (Desktop). Taki test to tylko formalność, nie powinno być tutaj żadnych problemów. Ważniejsze jest sprawdzenie tej aplikacji na telefonie.

Budowanie odpowiedniej aplikacji

Budowanie odpowiedniej aplikacji

Test pierwszej aplikacji mobilnej z Qt

Na telefonie musimy mieć włączoną opcję debugowania przez USB. Jest ona potrzebna do tego, abyśmy mogli debugować aplikację bezpośrednio z Qt. Możliwość tą włączamy na telefonie w opcjach programistycznych, które znajdują się w ustawieniach telefonu.

Najczęściej, aktywuje się to przez energiczne klikanie w numer kompilacji systemu, który wyświetlany jest w zakładzie z informacjami na temat telefonu. Po stosunkowo dużej liczbie kliknięć dostaniemy informację o tym, że opcje programistyczne zostały włączone.

Potrzebna będzie nam jeszcze informacja na temat architektury procesora znajdującego się w telefonie. W zdecydowanej większości telefonów będzie to ARM. Dla telefonów z procesorami Intel będzie to x86 (tak jest w moim przypadku). Jeśli będziemy mieć problem z określeniem architektury to Qt powinno nam w tym pomóc (wyświetli się odpowiednia informacja).

Uruchomienie pierwszej aplikacji

Jeśli mamy już włączoną opcję debugowania telefonu przez USB to podpinamy go do komputera. Cały czas analizujemy to, co się dzieje na telefonie, ponieważ system Android zapyta nas o zezwolenie na debugowanie USB. Potwierdzamy i akceptujemy tę opcję. W razie braku takiego komunikatu, warto spróbować podłączyć telefon jeszcze raz lub przejdź dalej (komunikat może pojawić się później).

Pytanie o zezwolenie na debugowanie

Pytanie o zezwolenie na debugowanie

Następnie w Qt Creatorze zmieniamy zestaw narzędzi z Desktop na Android dla architektury naszego procesora (w moim przypadku jest to x86) i klikamy uruchom.

Uruchomienie aplikacji mobilnej

Uruchomienie aplikacji mobilnej

Pojawi się nowe okno, a w sekcji z kompatybilnymi urządzeniami powinniśmy zobaczyć podłączony telefon. Jeśli na tym etapie pojawi się informacja o niekompatybilnym urządzeniu to będzie znaczyło, że mamy złą wersję API Androida lub wybraliśmy błędną wersję architektury procesora.

Wybór odpowiedniego telefonu

Wybór odpowiedniego telefonu

Jeśli wszystko przebiegło poprawnie to klikamy OK - rozpocznie się wtedy kompilacja, budowanie i wgrywanie aplikacji. Przy pierwszym uruchomieniu, Qt może ściągać jeszcze dodatkowe narzędzia (informacje na ten temat pojawią się w komunikatach kompilatora).

Po chwili aplikacja powinna uruchomić się na podłączonym do komputera telefonie:

Aplikacja uruchomiona na telefonie z Androidem

Aplikacja uruchomiona na telefonie z Androidem

Podsumowanie

W tej części skonfigurowaliśmy Qt do budowania aplikacji na urządzenia mobilne z Androidem oraz zbudowaliśmy prostą aplikację, którą uruchomiliśmy na naszym telefonie. Najtrudniejsza część za nami, teraz możemy już spokojnie zając się pisaniem bardziej rozbudowanych aplikacji mobilnych.

Czy artykuł był pomocny? Oceń go:

Średnia ocena / 5. Głosów łącznie:

W kolejnej części kursu stworzymy aplikacje na Androida, która pozwoli nam na uzyskanie połączenia bezprzewodowego z Arduino. Do komunikacji wykorzystamy wbudowany w telefon Bluetooth oraz popularny moduł HC-05, który będzie podłączony do naszego mikrokontrolera.

Autor: Mateusz Patyk

Nawigacja kursu


O Autorze

Autorem tej serii wpisów jest Mateusz Patyk, który zawodowo zajmuje się programowaniem systemów wbudowanych oraz rozwijaniem aplikacji na desktopy i urządzenia mobilne. Jego głównymi obszarami zainteresowań są systemy sterowania, egzoszkielety i urządzenia do wspomagania chodu człowieka. Prywatnie miłośnik dobrego kina i gier strategicznych.

android, arduino, programowanie, qt

Trwa ładowanie komentarzy...