Run the QT application on Android
The biggest advantage of QT is the cross-platform, one-time development of QT applications, which can run Windows, Linux, Mac ...... Nowadays, the Android operating system on the mobile platform is so popular that QT certainly cannot let go of Android support. By the way, there are also iPhone/iPad. And,C ++Developers, it's not a problem to develop android! However, at present, there are too few people studying QT for Android in China. Today I am using the resources shared by the developer community outside China: necessitas
Development Environment
Ubuntu 10.04 (Sorry, QT for Android does not support Windows development at the moment)
Sun-java6 (Sorry, QT for Android 1.5 will report an error, only 1.6)
Necessitas Resource: Click to jump to resource
Apache-ant-1.8.0 or later versions: download resources of version 1.8.2
Procedure
After necessitas QT creator is installed, an android option is added when you create a project. Naturally, you can create an android project. Then we will be pleasantly surprised to find that the android folder is added to the project directory. This is why the QT application runs successfully on Android. In the next article, we will analyze how to implement Android support ......
In tools --> options, configure the android environment variable:
Note: Do not forget to add the AVD named qtonandroid (simulator)
Then we can start to develop the QT application. I just wrote a little to demonstrate it. Then click Run (CTRL + r ).
If this error occurs:
Starting remote process...
Can't find EU. Licentia. necessitas. industrius. example. yiyaaixuexi Process
Solution:
Set the android target SDK to Android-8 in the run option.
If the error message is:
Starting remote process...
(I/Qt Java (469): surfacechanged: 480,762)
D/dalvikvm (469): trying to load lib/data/EU. Licentia. necessitas. Ministro/files/QT/lib/libqtcore. So 0x44ede7e8
D/dalvikvm (469): added shared lib/data/EU. Licentia. necessitas. Ministro/files/QT/lib/libqtcore. So 0x44ede7e8
D/dalvikvm (469): No jni_onload found in/data/EU. Licentia. necessitas. Ministro/files/QT/lib/libqtcore. So 0x44ede7e8, skipping init
D/dalvikvm (469): trying to load lib/data/EU. Licentia. necessitas. Ministro/files/QT/lib/libqtgui. So 0x44ede7e8
D/dalvikvm (469): added shared lib/data/EU. Licentia. necessitas. Ministro/files/QT/lib/libqtgui. So 0x44ede7e8
D/dalvikvm (469): No jni_onload found in/data/EU. Licentia. necessitas. Ministro/files/QT/lib/libqtgui. So 0x44ede7e8, skipping init
D/dalvikvm (469): trying to load lib/data/EU. Licentia. necessitas. Ministro/files/QT/plugins/platforms/Android/libandroid-8.so 0x44ede7e8
D/dalvikvm (469): added shared lib/data/EU. Licentia. necessitas. Ministro/files/QT/plugins/platforms/Android/libandroid-8.so 0x44ede7e8
I/Qt (469): QT start
D/dalvikvm (469): trying to load lib/data/EU. Licentia. necessitas. industrius. example. yiyaaixuexi/lib/libyiyaaixuexi. So 0x44ede7e8
D/dalvikvm (469): added shared lib/data/EU. Licentia. necessitas. industrius. example. yiyaaixuexi/lib/libyiyaaixuexi. So 0x44ede7e8
I/Qt (469): QT start
W/applicationcontext (469): Unable to create files directory
D/androidruntime (469): Shutting Down VM
W/dalvikvm (469): threadid = 1: thread exiting with uncaught exception (group = 0x4001d800)
E/androidruntime (469): Fatal exception: Main
E/androidruntime (469): Java. Lang. nullpointerexception
E/androidruntime (469): at EU. Licentia. necessitas. industrius. qtactivity. startapplication (qtactivity. Java: 126)
E/androidruntime (469): at EU. Licentia. necessitas. industrius. qtactivity. Access $000 (qtactivity. Java: 62)
E/androidruntime (469): at EU. Licentia. necessitas. industrius. qtactivity $1 $ 1.run( qtactivity. Java: 149)
E/androidruntime (469): at Android. OS. handler. handlecallback (handler. Java: 587)
E/androidruntime (469): at Android. OS. handler. dispatchmessage (handler. Java: 92)
E/androidruntime (469): at Android. OS. Looper. Loop (Looper. Java: 123)
E/androidruntime (469): at Android. App. activitythread. Main (activitythread. Java: 4627)
E/androidruntime (469): At java. Lang. Reflect. method. invokenative (native method)
E/androidruntime (469): At java. Lang. Reflect. method. Invoke (method. Java: 521)
E/androidruntime (469): At com. Android. Internal. OS. zygoteinit $ methodandargscaller. Run (zygoteinit. Java: 868)
E/androidruntime (469): At com. Android. Internal. OS. zygoteinit. Main (zygoteinit. Java: 626)
E/androidruntime (469): At Dalvik. system. nativestart. Main (native method)
I/process (469): Sending signal. PID: 469 Sig: 9
Solution:
This error is not the cause of Environment configuration, but the design of the QT application itself does not comply with the android support of existing platform tools.
For example, the label contains Chinese characters ...... You can use an English character instead.
If you have developed a scheme to support Chinese characters, feel free to talk about it ~~
If the compilation succeeds, the android simulator will automatically pop up after the compilation is passed, but this problem will occur during the first running of the program:
Don't worry, you can go to Google marketto download ministroconfigurationtool-1.0.apk and Ministro-2.0.apk,
You can also directly download the resources I uploaded to csdn: apk-1 apk-2
After the ADB install promotes the installation of these two APK files, run the program again and a prompt is displayed:
After the installation is complete, start the log frantically and we will see the QT application on the simulator ~~ Oh no, now YesAndroid applicationsNow!
By the way, the qtapplication is actually packaged into yiyaaixuexi-debug.apk, which is in the android/bin/directory of the project directory.
Yes:
Go home after work! Welcome ~