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.
Qt wspomaga użytkownika w procesie konfiguracji informując od razu o błędach. W razie problemów warto zapoznać się z dokumentacją lub informacjami z oficjalnego forum Qt.
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
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):
C:\Android\JDK\jdk1.8.0_191
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
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
W uruchomionym Android Studio szukamy przycisku Configure i z menu wybieramy 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
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
Czasami może się zdarzyć, że naszym oczom ukarze się taki, mniej pozytywny, widok:
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.
Wersja, która zadziałała w moim przypadku to 17c.
Wybieramy odpowiednią wersję i wypakowujemy ją w folderze obok SDK. W moim przypadku było to:
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
Jeśli wszystko poszło dobrze to mamy już skonfigurowane Qt dla Androida.
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
Zakładka Wersje Qt również "świeciła wtedy na czerwono":
Błąd wersji Qt
Na liście dostępnych kompilatorów brak było informacji na temat Androida:
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
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
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
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
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
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.
Opcje programistyczne mogą być domyślnie zablokowane. Musisz wtedy poszukać w sieci jak w Twoim telefonie można je odblokować.
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
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
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
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
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 wpis był pomocny? Oceń go:
Średnia ocena 4.8 / 5. Głosów łącznie: 49
Nikt jeszcze nie głosował, bądź pierwszy!
Artykuł nie był pomocny? Jak możemy go poprawić? Wpisz swoje sugestie poniżej. Jeśli masz pytanie to zadaj je w komentarzu - ten formularz jest anonimowy, nie będziemy mogli Ci odpowiedzieć!
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.
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.
Dołącz do 30 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY na bazie Arduino i Raspberry Pi.
Dołącz do 30 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY z Arduino i RPi.
Trwa ładowanie komentarzy...