找回密码
 立即注册
收起左侧

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

19
回复
10602
查看
[复制链接]
累计签到:867 天
连续签到:1 天
来源: Qt教程 2019-2-19 22:31:30 显示全部楼层 |阅读模式



导语

在第一篇文章中我们已经创建了第一个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内容更改如下:

import QtQuick 2.9
import QtQuick.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示例程序编译运行到手机上测试下效果了吧!希望大家玩的高兴!

期待下一篇文章!




返回目录



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
参与人数 5人气 +10 收起 理由
martinshen + 2
大千世界MCQ + 2 很详细!
Sehin_春子 + 2
1224220262 + 2
duliningmissyou + 2 对我帮助很大!

查看全部评分总评分 : 人气 +10

阿里云
回复

使用道具 举报

累计签到:17 天
连续签到:1 天
2019-2-26 09:56:22 显示全部楼层
yafeilinux 发表于 2019-2-23 12:39
安装Qt的时候选择ARM EABI v7a库;sdk里面下载ARM EABI v7a System Image;创建AVD的时候target选择Andro ...

感谢亚飞,成功了
分享一下
我感觉还是在当初安装时没有选择正确,后来虽然安装了 android-ndk-r16b、android-sdk-windows、jdk-iu201-windows-x64.exe ,按教程配置后,AVD(安卓虚拟机)是灰的,被列在不兼容设备中。后来又安装了android-ndk-r18b,还是不成功
经亚飞提醒后,
我把QT完全卸载了,用的是your uninstaller这个软件
然后下载了 3个G的大包  qt-opensource-windows-x86-5.12.1.exe 进行安装 ,为了稳妥起见安装组件全部选择了。
QT SDK qt-creator-opensource-windows-x86_64-4.8.1.exe 我没有安装,不知有什么问题没有。
1安装完成后还是不成功,检查
工具-选项-Kits-Debuggers 发现 Android Debugger 对应的 Location 的值是 android-ndk-r16b的目录,

工具-先项-设备-Android-Android NDK的路径值 android-ndk-r18b  
不一致,而且无法移除,为稳妥起见,再次卸载QT
然后将android-ndk-r16b的目录删除,android-ndk-r18b的目录保留
再次重新安装,这次 可以了,在Select Android Device窗口中,MyAVD属于兼容设备,显示OpenGL unenbled,点OK,启动myAVD,可以看到载入了项目窗体,但是没有显示 hello Android
回到AVD Manager,选中myAVD,点Edit,选中找到Emulation Options: 选中Use Host GPU,一路OK

然后成功了。

以上分享,给网友提供一条思路
回复 支持 0 反对 1

使用道具 举报

累计签到:17 天
连续签到:1 天
2019-2-23 07:33:03 显示全部楼层
然而我在 选择安卓设备 时 ,MyAVD被归到不兼容设备之中,OK是灰的。。

重装了几次android开发包。。。
回复 支持 反对

使用道具 举报

累计签到:867 天
连续签到:1 天
2019-2-23 12:39:28 显示全部楼层
谁啊 发表于 2019-2-23 07:33
然而我在 选择安卓设备 时 ,MyAVD被归到不兼容设备之中,OK是灰的。。

重装了几次android开发包。。。 ...

安装Qt的时候选择ARM EABI v7a库;sdk里面下载ARM EABI v7a System Image;创建AVD的时候target选择Android 7.0-API Level 24;这几个对应一下。
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2019-3-2 16:13:22 显示全部楼层
你好老师,我按您的教程运行后显示Can't find Ministro Devices怎么解决,困扰我两天了
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2019-3-2 16:47:13 显示全部楼层
叶脉 发表于 2019-3-2 16:13
你好老师,我按您的教程运行后显示Can't find Ministro Devices怎么解决,困扰我两天了 ...

已经解决了,不用安装ministro,是我安装虚拟环境为了点usb host
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2019-3-17 16:55:26 显示全部楼层
配置出问题是怎么回事?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

累计签到:52 天
连续签到:2 天
2019-3-24 12:40:14 显示全部楼层
我的Qt是5.12.2    Android和Java的选择和老师的一样  但是编译APk的不成功
Command does not exist: D:\software\Android\android-ndk-r16b-windows-x86_64\android-ndk-r16b/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readobj.exe
Command does not exist: D:\software\Android\android-ndk-r16b-windows-x86_64\android-ndk-r16b/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe

提示的是这个问题
回复 支持 反对

使用道具 举报

累计签到:52 天
连续签到:2 天
2019-3-24 17:58:57 显示全部楼层
minple 发表于 2019-3-24 12:40
我的Qt是5.12.2    Android和Java的选择和老师的一样  但是编译APk的不成功
Command does not exist: D:\so ...

OK了  我把NDK换成18就好了
回复 支持 反对

使用道具 举报

尚未签到

2019-5-11 20:15:06 显示全部楼层
请问为什么我的sdkmanager.exe运行不起来,,只有cmd窗口一闪而过,没有界面
回复 支持 反对

使用道具 举报

累计签到:3 天
连续签到:2 天
2019-5-16 05:14:07 显示全部楼层
734140764 发表于 2019-5-11 20:15
请问为什么我的sdkmanager.exe运行不起来,,只有cmd窗口一闪而过,没有界面

我昨天遇到了类似的问题,现在谷歌不提供sdkmanager.exe的服务了,官方只能下载到command line tool,是个批处理运行文件。有需要的话可以参考下我的记录,在CSDN博客,标题是“Win10中Qt Android配置 - SDK Command Line”。我不能发url,所以就只能这么说了哈哈哈。

重点就是这些:
打开cmd工具,一路cd到sdkmanager.bat所在的文件夹,先运行了一下这个批处理文件,接着输入:

sdk --list --channel=0

然后参考官方指导,安装需要的package,应该就行了。
比如:
  1. sdkmanager "build-tools;28.0.3"
  2. sdkmanager "platform-tools" "platforms;android-28"
复制代码
回复 支持 反对

使用道具 举报

尚未签到

2019-6-10 20:57:31 显示全部楼层
你好,请问一下。

Generating Android Package
  Input file: F:/work/QtAndroidPrj/1/1/android-lib1.so-deployment-settings.json
  Output directory: F:/work/QtAndroidPrj/1/1/android-build/
  Application binary: F:/work/QtAndroidPrj/1/1/lib1.so
  Android build platform: android-24
  Install to device: No
  -- Skipping E:/Qt/5.12.3/android_armv7/plugins/iconengines/libqsvgicon.so. It has unmet dependencies: lib/libQt5Svg.so.
  -- Skipping E:/Qt/5.12.3/android_armv7/plugins/imageformats/libqsvg.so. It has unmet dependencies: lib/libQt5Svg.so.
:checkDebugClasspath UP-TO-DATE
:preBuild UP-TO-DATE
:preDebugBuild UP-TO-DATE
:compileDebugAidl FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileDebugAidl'.
> java.io.IOException: com.android.ide.common.process.Proces**ception: Error while executing process F:\work\QTFORANDROID\android-sdk_r24.4.1-windows\android-sdk-windows\build-tools\29.0.0\aidl.exe with arguments {-pF:\work\QTFORANDROID\android-sdk_r24.4.1-windows\android-sdk-windows\platforms\android-24\framework.aidl -oF:\work\QtAndroidPrj\1\1\android-build\build\generated\source\aidl\debug -IF:\work\QtAndroidPrj\1\1\android-build\src -IF:\work\QtAndroidPrj\1\1\android-build\aidl -IF:\work\QtAndroidPrj\1\1\android-build\src\debug\aidl -IE:\Qt\5.12.3\android_armv7\src\android\java\src -dC:\Users\94388\AppData\Local\Temp\aidl349251454838806796.d E:\Qt\5.12.3\android_armv7\src\android\java\src\org\kde\necessitas\ministro\IMinistro.aidl}

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

BUILD FAILED in 1m 17s
3 actionable tasks: 1 executed, 2 up-to-date
Building the android package failed!
  -- For more information, run this command with --verbose.
20:50:14: 进程"E:\Qt\5.12.3\android_armv7\bin\androiddeployqt.exe"退出,退出代码 14 。
Error while building/deploying project 1 (kit: Android for armeabi-v7a (Clang Qt 5.12.3 for Android ARMv7))
When executing step "Build Android APK"
20:50:14: Elapsed time: 01:25.

我出现这个问题,应该如何解决呢。

使用的是
android-ndk-r19c-windows-x86_64
android-sdk_r24.4.1-windows
jdk-8u212-windows-x64
这几个

点评

是第一次运行吗,是64位系统吧?如果可以确保流程设置都没有问题,建议下载Qt 5.12.0测试下。  详情 回复 发表于 2019-6-10 21:12
回复 支持 反对

使用道具 举报

累计签到:867 天
连续签到:1 天
2019-6-10 21:12:37 显示全部楼层
wclildy 发表于 2019-6-10 20:57
你好,请问一下。

Generating Android Package

是第一次运行吗,是64位系统吧?如果可以确保流程设置都没有问题,建议下载Qt 5.12.0测试下。
回复 支持 反对

使用道具 举报

尚未签到

2019-6-11 09:09:23 显示全部楼层
yafeilinux 发表于 2019-6-10 21:12
是第一次运行吗,是64位系统吧?如果可以确保流程设置都没有问题,建议下载Qt 5.12.0测试下。 ...

是第一次运行,电脑win10 64位。流程没问题,而且我笔记本(win10 64)和台式机(win10 64)都是一样的错误,按你说的我再试试。
谢谢
回复 支持 反对

使用道具 举报

尚未签到

2019-6-11 20:29:27 显示全部楼层
yafeilinux 发表于 2019-6-10 21:12
是第一次运行吗,是64位系统吧?如果可以确保流程设置都没有问题,建议下载Qt 5.12.0测试下。 ...

全部卸载,使用和你上文给的相同版本的文件,依旧是相同的错误,难受了,请问你还有啥指导吗

点评

用win10没有测试过,教程用的是win7 64位的。你把所有东西都安装到C盘试试。  详情 回复 发表于 2019-6-11 21:49
回复 支持 反对

使用道具 举报

累计签到:867 天
连续签到:1 天
2019-6-11 21:49:44 显示全部楼层
wclildy 发表于 2019-6-11 20:29
全部卸载,使用和你上文给的相同版本的文件,依旧是相同的错误,难受了,请问你还有啥指导吗 ...

用win10没有测试过,教程用的是win7 64位的。你把所有东西都安装到C盘试试。
回复 支持 反对

使用道具 举报

尚未签到

2019-6-14 16:08:09 显示全部楼层
本帖最后由 wclildy 于 2019-6-14 16:10 编辑
yafeilinux 发表于 2019-6-11 21:49
用win10没有测试过,教程用的是win7 64位的。你把所有东西都安装到C盘试试。 ...

你好,非常感谢。换了好多版本,现在终于成功了,安装的版本如图。

jdk-8u201-windows-x64
android-ndk-r19c-windows-x86_64
android-sdk_r24.4.1-windows

Android SDK Build-tools 没有安装最新的29.0.1的(之前一直按照最新的安装),现在使用28.0.3版本。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

能用就好,现在的版本兼容确实不怎么好,需要自己去匹配。  详情 回复 发表于 2019-6-14 18:52
回复 支持 反对

使用道具 举报

累计签到:867 天
连续签到:1 天
2019-6-14 18:52:05 显示全部楼层
wclildy 发表于 2019-6-14 16:08
你好,非常感谢。换了好多版本,现在终于成功了,安装的版本如图。

jdk-8u201-windows-x64

能用就好,现在的版本兼容确实不怎么好,需要自己去匹配。
回复 支持 反对

使用道具 举报

累计签到:11 天
连续签到:1 天
2019-7-7 09:02:09 显示全部楼层
编译的时候提示这个,没有编译成功啊。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册