找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

第2篇Qt Quick入门教程之基础(二)搭建Qt Android开发环境

admin 2019-3-1 06:32 320人围观 Qt相关

来源于微信公众号:yafeilinux和他的朋友们



导语


在第一篇文章中我们已经创建了第一个Qt Quick项目,见识了QML程序代码的简约易懂。前面曾提到,Qt Quick就是在移动开发的大背景下应运而生的。为了让广大初学者学习咱们教程更有成就感,能够更加斗志昂扬地学习后面的内容,在进一步讲解QML语法之前,先来和大家一起搭建Qt Android开发环境,让我们以后每个示例程序都可以在桌面和手机上同时运行!

在Qt帮助的Qt for Android页面提供了所有相关内容的介绍,建议大家多看看帮助文档。从Qt 5开始,提供了对Android平台的支持,现在版本的Qt,其编译的程序可以运行在Android 4.1(API Level 16)以上平台中。几乎所有Qt模块都支持Android平台,除了Qt WebEngine、Qt Serial Port和平台特定的一些模块。虽然说Qt Quick更适合开发移动应用,但Qt Widgets项目理所当然也可以在Android上运行,只是效果可能差强人意。

下面开始我们的教程!

设置Android开发环境


要在Qt中进行Android开发,需要使用 JDK、Android SDK 和 Android NDK 三个工具,因为我这里使用的是64位的Win 7系统,所以下载的均是64位版本,下面是下载地址及需要下载的文件,如果大家无法下载,可以到咱们Qt开源社区(www.qter.org)的下载页面进行下载。

  • JDK

地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

下载文件:jdk-8u201-windows-x64.exe

  • Android SDK

地址:http://dl.google.com/android/android-sdk_r24.4.1-windows.zip

下载文件:android-sdk_r24.4.1-windows.zip

  • Android NDK

地址:https://developer.android.google.cn/ndk/downloads/

下载文件:android-ndk-r16b-windows-x86_64.zip

下载完成后只有 JDK 需要安装,其他两个直接解压缩即可。建议将它们都安装到相同的目录内,比如我这里是D:\Android目录。

安装完成后先运行Android SDK目录下的SDK Manager.exe对Android SDK进行必要的更新。我们选择Tools目录中的Android SDK Tools、Android SDK Platform-tools和Android SDK Build-tools,这三个工具是必须的;最下面Extras目录中的Google USB Driver,这个也是必须的。



还有Android 7.0(API 24)目录中的SDK Platform和ARM EABI v7a System Image,这个是根据需要选择的,前者是SDK后者是虚拟机用的镜像文件。如果大家对这个比较熟悉,那么就根据自己的需要来选择,如果不是很了解,就跟我选择一样即可。



选择完成后单击Install 6 packages按钮,这时会弹出Choose Packages to Install对话框,这里需要选中Accept License选项同意协议,单击Install进行安装。

安装完成后,回到Qt Creator选项菜单的Android设备配置界面,指定几个工具的路径。配置好后就会自动设置默认的Android构建套件Android for armeabi-v7a (Clang Qt 5.12.0 for Android ARMv7),我们就可以使用这个来编译Android应用了。



使用虚拟机模拟运行


前面我们下载了镜像文件,下面就先来看看如何在虚拟机上运行Qt Android程序吧。过程比较慢,效果不是很好,大家做个了解即可。

首先运行Android SDK目录下的 AVD Manager.exe,在这里创建一个虚拟设备。单击右侧的Create...按钮打开Create new Android Virtual Device(AVD)对话框,在其中设置AVD Name为myAVD,选择Target为Android 7.0-API Level 24选项,其他可以自行设置。



设置完成后,回到Qt Creator,按照我们上一篇的内容创建helloandroid项目,在选择构建套件时,同时选择上Android套件。



创建好以后,将main.qml内容更改如下:
importQtQuick 2.9
importQtQuick.Window 2.2

Window{    visible: true    width: 640   
   height: 480   
   title: qsTr("Hello World")    Text {        anchors.centerIn: parent        text: qsTr("Hello Android")    }    MouseArea {        anchors.fill: parent        onClicked: Qt.quit()    }}

这里在界面上添加了Text文本,然后使用MouseArea使得界面可以获取鼠标点击,当鼠标点击后程序退出。具体代码我们在下一篇详细讲解。下面继续教程。

可以先在左下角的目标选择器中将构建套件选择为Desktop版本,按下Ctrl+R快捷键运行一下程序。在以后的开发中一般也是先开发桌面版本,等调试没有问题后再编译到移动平台进行测试。



然后将构建套件选择为Android版本,再次按下Ctrl+R运行程序。这时会弹出Android设备选择对话框,选择前面创建的虚拟机myAVD。



单击OK按钮启动虚拟机,慢慢等待,期待惊喜... ...



部署项目到手机上运行


如果大家亲自测试了虚拟机,我想也一定会很烦躁吧!其实可以使用X86版本的虚拟机,那个会快不少,有兴趣的童鞋可以自己尝试一下。不过,还是建议直接将程序部署到手机上进行测试,这个效果更好,而且更真实。

我这里使用的是小米8手机,其系统是基于Android 8.1.0的MIUI 10.0稳定版。要在Qt Creator中将程序部署到手机上运行,需要在手机的开发者选项中开启USB调试。小米8的开启方式是依次选择“设置→更多设置→开发者选项→USB调试、USB安装”,不过需要注意,在MIUI 10.0稳定版中需要进入“设置→我的设备→全部参数”,在“MIUI版本”上多次单击才能进入开发者模式,这样才会出现开发者选项。

当弹出是否允许USB调试的对话框,选择“确定”。



然后使用数据线将手机连接到电脑,这时手机端会显示是否允许计算机进行调试,选中“一律允许使用这台计算机进行调试”选项,这样以后就不会再弹出这个提示了。



现在到Qt Creator中再次运行helloandroid程序,在Select Android Device对话框中选择小米8。如果没有出现连接的手机或显示手机不可用,可以单击Refresh Device List按钮来刷新设备。按下OK按钮将程序部署到手机上。



当部署完成时,在手机上可能会弹出是否允许USB安装应用的提示,选择“继续安装”。



这时就会在手机上自动运行helloandroid程序,退出程序后可以看到,在手机上安装了一个helloandroid应用。

小结


现在Qt 5已经更新到了5.12版本,对于Android开发环境的配置也已经优化地很好了,可以看到,整个过程还是比较简单的。如果大家配置的环境无法编译运行,一般是使用的工具版本问题,这里的原则是尽量都使用64位的。如果成功配置好了环境,那么我想同学们已经迫不及待地要将Qt示例程序编译运行到手机上测试下效果了吧!希望大家玩地高兴!最后,送大家一张流浪地球的剧照(Qt 3D: Planets QML Example)作为彩蛋!



期待下一篇文章!

相关文章


第1篇 Qt Quick入门教程之基础(一)进入Qt Quick的世界

Qt 学习之路 2:QML 和 QtQuick 2




----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:yafeilinux和他的朋友们,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......