Tworzenie aplikacji moblinych w QT – konfiguracja środowiska
Autorem wpisu jest Łukasz Kosiński z bloga: binarnie.pl.
Nie brak osób przekonanych, że aplikacje mobilne pisane powinny być z użyciem wyłącznie natywnych technologii. Sam przyznam, że słuszność leży w dużej mierze właśnie po stronie takich osób. Dlaczego w takim razie piszę o jakimś tam QT? A dlatego, że przy wyborze technologii stosowanej w danym projekcie (podobnie jak w kodzie) jest wiele if’ów. Jeżeli potrzebujemy wysokiej wydajności to zdecydujemy się na technologię A. Jeżeli łatwości w implementacji to wybierzemy technologię B. Postaram się wykazać, że w zależności od potrzeb, QT może być skutecznie i efektywnie wykorzystywane przy tworzeniu aplikacji mobilnych.
Wady i zalety tworzenia aplikacji mobilnych w oparciu o QT
Do głównych zalet pisania pod urządzenia mobilne w QT należy między innymi możliwość tworzenia aplikacji dla urządzeń korzystających z różnych systemów operacyjnych. Dzięki multiplatformowości QT aplikacje tworzone pod Androida tylko w niewielkim stopniu różnią się od tych na iOS’a. Nie ma konieczności przepisywania już raz napisanej aplikacji z Javy na Swifta i vice versa. We wszystkich przypadkach za język, którym będziemy się posługiwać posłuży nam C++ i QML. QML jest stworzonym na potrzeby QT i równolegle z tą biblioteką rozwijanym językiem, który służy do obsługi graficznej programu.
Za środowiskiem QT przemawia również fakt, iż tworzenie przy jego użyciu jest szybkie i relatywnie proste. Stworzenie działającego prototypu, szkieletu aplikacji nie powinno zająć zbyt wiele czasu. Na fakt ten duży wpływ ma dostarczany razem ze środowiskiem Design Mode, za którego pomocą przy pomocy kilku kliknięć możemy stworzyć przyjazną dla oka szatę graficzną. Dzięki temu, czas pracy nad projektem jest wyraźnie skracany.
Nie jest niestety tak, że omawiana technologia to ideał wśród innych rozwiązań. Tak też nie twierdzę. QT blado wypada na tle natywnych języków jeżeli pod uwagę weźmiemy szybkość działania. Rozbudowana aplikacja na Androida napisana z wykorzystaniem Javy bije naszą bibliotekę pod względem wydajności. Siłą rzeczy język dedykowany będzie zostawiał inne w tyle pod względem nie tylko szybkości, ale też niezawodności. Uczciwie muszę wspomnieć, że tworząc aplikacje w QT można natknąć się na kłopoty niespotykane, gdy używamy języka natywnego. Bugi, które można było spotkać w QT polegały najczęściej na problemach z implementacją obsługi wbudowanych w telefon/tablet podzespołów (aparat, kamera). Na szczęście wszystkie problemy są na bieżąco eliminowane wraz z kolejnymi wersjami środowiska QT.
Słowem podsumowania, QT nada się wszędzie tam, gdzie nie mamy w planach tworzyć obszernych, często komercyjnych aplikacji, które wymagać będą dużej wydajności. Natomiast swoje zastosowanie może znaleźć w niewielkich aplikacjach, na które również jest obecnie zapotrzebowanie. Coraz więcej firm chciałoby mieć własną aplikację (przemilczmy kwestię ich użyteczności :)). Jest to też bardzo dobre rozwiązanie dla hobbystów rozwijających osobiste projekty na niedużą skalę, bądź też na użytek własny.
Konfiguracja środowiska QT for Android
Instalacja QT
Zanim przystąpimy do samego procesu twórczego. Zanim napiszemy pierwszą linijkę kodu. Zanim doznamy satysfakcji z naszego dzieła, musimy przebrnąć przez nużącą konfigurację środowiska, w którym przyjdzie nam pracować. Pierwszym krokiem będzie pobranie instalatora z oficjalnej strony QT.
Dostarczenie niezbędnych elementów
Za pomocą czystego QT nie mamy możliwości tworzenia aplikacji pod urządzenia oparte na Androidzie (na tym systemie skupię swoją uwagę). Należy dostarczyć mu cztery niezbędne do prawidłowego funkcjonowania elementy. Mianowicie mowa o:
- Android Software Development Kit Tools – QT sugeruje nam inaczej, ale nie ma potrzeby pobierania całego Android Studio wraz z Anroid SDK,
- Java Development Kit,
- Android Native Development Kit – pakiet pozwalający na tworzenie aplikacji z wykorzystaniem C++,
- Apache Ant.
Linki do pobrania wszystkich niezbędnych do prawidłowego działania QT for Android możemy znaleźć uruchamiając QT Creator, a następnie wchodząc w Tools, Options, Device, Android.
Obok każdej ze ścieżek do wymaganych elementów, znajduje się zielona strzałka umożliwiająca bezpośrednie ich pobranie. W przypadku SDK po jego pobraniu należy uruchomić program SDK Manager, dostarczany wraz z SDK w celu uaktualniania danych i pobrania brakujących komponentów. Należy zadbać, aby nie zabrakło nam takich elementów jak: Android SDK Platform-Tools, Android SDK Build-Tools oraz Google USB Driver.
Po pobraniu wszystkich elementów należy uzupełnić pola ze ścieżkami do folderów przechowujących pliki danych narzędzi. W tym momencie nasze środowisko pracy jest już gotowe.
Tworzenie aplikacji testowej
Na potrzeby sprawdzenia, czy podczas instalacji i konfiguracji wszystko poszło dobrze, utworzymy najprostszą z możliwych aplikacji. Jej celem będzie jedynie testowanie poprawności w działaniu środowiska. Po więcej zapraszam na binarnie.pl [tu link], gdzie już w nadchodzącym miesiącu pojawią się pierwsze wpisy dotyczące nauki QML oraz tworzenia bardziej zaawansowanych aplikacji mobilnych z wykorzystaniem QT.
W tym celu z startowego widoku QT wybieramy New Project. Pojawi się okno, w którym będziemy musieli zdecydować z jakiego typu projekt mamy zamiar stworzyć. Spośród dostępnych opcji wybieramy QT Quick Application.
W dalszej kolejności nazywamy projekt, wyznaczamy docelowe miejsce na dysku dla folderu z danymi projektu i klikamy OK, aż dotrzemy do okna z wyborem zestawów narzędzi do debuggowania i kompilacji naszego kodu. W tym miejscu musimy zadbać o dostarczenie zestawów Android for x86, lub Android for armeabi. W zależności od używanego przez nas urządzenia.
W ostatnim już oknie wybieramy system kontroli wersji, którym chcemy się posługiwać w czasie prac nad projektem. Nie jest to konieczne do prawidłowego działania aplikacji.
Tym sposobem po zatwierdzeniu wszystkiego przyciskiem Finish stworzyliśmy pierwszą aplikację mobilną – standardowe Hello World.
Uruchomienie aplikacji na urządzeniu z Androidem
Pozostało jedynie zadbać o to żebyśmy mieli na czym testować naszą aplikację. Z uwagi na dużo większą niezawodność zdecydowałem się na wykorzystanie w tym celu mojego telefonu (Honor 5X), zamiast korzystać z wirtualnych maszyn. Pokażę wam teraz w jaki sposób uruchomić naszą aplikację na fizycznym urządzeniu.
Wchodzimy w ustawienia naszego telefonu. Wybieramy „O telefonie ” i po wielokrotnym kliknięciu w numer kompilacji uzyskamy dostęp do Opcji deweloperskich naszego telefonu. Pozostało nam jedynie włączyć możliwość debuggowania poprzez USB i możemy wykorzystywać do kompilowania swojej aplikacji własnego smartfona.
*W niektórych przypadkach wymagane będzie dodatkowe zainstalowanie programu ADB Installer w celu uzupełnienia braków w sterownikach. Bez tego QT może nie widzieć naszego urządzenia.
Czas na pierwszą – miejmy nadzieję udaną – kompilację. Mając otwarty projekt klikamy na zieloną strzałkę z robaczkiem w lewym dolnym rogu ekranu (należy się oczywiście upewnić, że korzystamy z właściwego debuggera i kompilatora!).
Pojawi nam się okno z dostępnymi urządzeniami z Androidem, kompatybilnymi z używanym kompilatorem. Wybieramy nasz sprzęt i klikamy OK. W tym momencie w telefonie powinno pojawić się powiadomienie dotyczące instalacji nowej aplikacji poprzez debugowanie USB. Udzielamy pozwolenia na instalację i możemy w pełni cieszyć się naszą pierwszą, działającą aplikacją na Androida. Po wprowadzeniu lekkich zmian moja aplikacja wygląda tak:
Zachęcam do spróbowania swoich sił w QT. Jest to fajna alternatywa dla standardowych rozwiązań i świetna okazja do zrobienia czegoś kreatywnego po godzinach.
Autorem wpisu jest Łukasz Kosiński z bloga: binarnie.pl.
Wydajność jest mocną stroną Qt w porównaniu do Android SDK (Qt używa Android NDK, kod jest kompilowany do natywnego ARM, podczas gdy Android SDK to bajtkod wirtualnej maszyny GJavy).