2 single: Building RingQt Applications for Mobile; Introduction
4 =======================================
5 Building RingQt Applications for Mobile
6 =======================================
8 In this chapter we will learn about Building RingQt Applications for Mobile.
12 pair: Building RingQt Applications for Mobile; Download Requirements
17 Check the next link : http://doc.qt.io/qt-5/androidgs.html
21 * The Android SDK Tools
23 https://developer.android.com/sdk/index.html
25 * The Android NDK (Tested using android-ndk-r21)
27 http://developer.android.com/tools/sdk/ndk/index.html
29 * Java SE Development Kit (JDK) v6 or later
31 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
34 pair: Building RingQt Applications for Mobile; Update the Android SDK
36 Update the Android SDK
37 ======================
39 Update the Android SDK to get the API and tools packages required for development
41 Tested using Android 4.4.2 (API 19)
43 * In Windows - Define the next Environment Variables based on your system.
49 For Example : C:\Program Files (x86)\Java\jdk1.8.0_05
55 For Example : C:\JavaAndroid\AndroidSDK
58 pair: Building RingQt Applications for Mobile; Install Qt for Android
60 Install Qt for Android
61 ======================
63 * You can install Qt for Android from the next link
65 https://download.qt.io/archive/qt/5.12/5.12.6/
67 * Run Qt Creator, Select Tools > Options > Android to add the
68 Android NDK and SDK paths.
70 http://doc.qt.io/qtcreator/creator-developing-android.html
74 pair: Building RingQt Applications for Mobile; Using Ring2EXE
79 We can use Ring2EXE to quickly prepare Qt project for our application
85 ring2exe myapp.ring -dist -mobileqt
88 .. note:: We can use the Distribute Menu in Ring Notepad
90 .. tip:: The option ( Prepare Qt project for Mobile devices ) in the Distribute Menu
93 pair: Building RingQt Applications for Mobile; The Qt project for your Ring application
95 The Qt project for your Ring application
96 ========================================
98 After using Ring2EXE or the Distribute Menu in Ring Notepad
100 * Using the Qt Creator Open the generated Qt project
102 Folder : target/mobile/qtproject
104 Project file : project.pro
106 * Using Qt Creator, You will find the compiled Ring application in the resources (YourAppName.ringo)
108 This file (Ring Object File) is generated by the Ring compiler using
112 ring YourAppName.ring -go -norun
114 * You can build your application using Qt Creator
116 (1) You can add your application images to the resources
118 Or You can use any text editor (Notepad) and modify : project.qrc
120 (2) To find images from your Ring application, You need to use the file name in resources
127 mypic = new QPixmap(":/cards.jpg")
129 mypic = new QPixmap("cards.jpg")
133 pair: Building RingQt Applications for Mobile; Comments about developing for Android using RingQt
135 Comments about developing for Android using RingQt
136 ==================================================
138 (1) The main project file is main.cpp
140 This file load Ring Compiler/Virtual Machine and RingQt
142 Then get the Ring Object File during the runtime from the resources
144 Then run the Ring Object File (ringapp.ringo) using the Ring VM
146 Through main.cpp you can extract more files from the resources to temp. folder once you
147 add them (create projects with many files).
149 (2) The next functions are missing from this Ring edition
151 * Database (ODBC, SQLite & MySQL)
153 * Security and Internet functions (LibCurl & OpenSSL)
155 * RingAllegro (Allegro Library)
157 * RingLibSDL (LibSDL Library)
159 Just use Qt Classes through RingQt.
161 For database access use the QSqlDatabase Class
163 .. note:: All of the missing libraries ((LibCurl, OpenSSL & Allegro) can be compiled for Android, but they are not included in this Qt project.
165 (3) use if isandroid() when you want to modify the code just for android
177 (4) Sometimes you will find that the button text/image is repeated in drawing !
178 it's Qt problem that you can avoid using the next code.
184 border-style: outset;
191 (5) Always use Layouts instead of manual setting of controls position and size.
193 This is the best way to get the expected user interface to avoid problems like (controls with small/extra size)
195 (6) When you deal with Qt Classes you can determine the images from resources (you don't need to copy them using main.cpp)
203 mypic = new QPixmap(":/cards.jpg")
205 mypic = new QPixmap("cards.jpg")
208 Now RingQt comes with the AppFile() function to determine the file name
214 mypic = new QPixmap(AppFile("cards.jpg")) # Desktop or Android
216 (7) When you update your project code, You don't have to use Ring2EXE to generate the Qt project again
218 Just use the Distribute Menu in Ring Notepad and select (Generate Ring Object File)
220 Then copy the YourAppName.ringo file to target/mobile/qtproject folder and accept replacing files.
222 (8) If your application folder contains a Qt resource file (project.qrc)
224 Then when you use Ring2EXE or Ring Notepad (Distribute - Prepare Qt project for Mobile devices) the
225 resource file will be used
227 See ring/applications/cards game as an example.