天天看点

怎么让qt程序在Android系统上运行

我们都知道支持跨平台是Qt的特点之一,也是比较重要的特点。最近在学习Qt的开发,就在想,它是怎么支持跨平台的呢?我平时的程序都是windows系统下开发和运行,语言用c++。那怎么把我用c++写的qt程序运行在android平台上呢。带着这个问题,通过查资料,用下面方法实现了跨平台。(这可能不是唯一的方法,也不一定是最好的方法,只是我找到的方法,记录学习以一下。)

Qt最大的优势就是跨平台,因为最近在学习Qt,就想把写的Qt程序移植

一、准备工作

下载并安装qt for android。Qt5.9之前每个版本都对应的编译环境,所以要下载安卓对应编译环境的qt版本,比如qt-opensource-windows-x86-android-5.7.0.exe。但现在这些东西资源很难找到了。而在Qt5.9后Qt官方将好多编译环境放到了一起,只需要安装对应组件就好,如下图。

怎么让qt程序在Android系统上运行

我电脑上装的是5.7但是我又找不到qt-opensource-windows-x86-android-5.7.0.exe资源,就只好把qt升级到5.12.6了。

下载并安装android sdk。SDK:(Software Development Kit)软件开发工具包。android SDK为开发者提供了库文件以及其他开发所用到的工具。

下载并安装android ndk。NDK:(Native Development Kit)跟android SDK差不多也是一个开发工具包,是用来给安卓手机开发软件用的,但是和SDK不同的是它用的是C语言,而android SDK用的是Java语言,可以支持C++和java之间的通信。

下载并安装android jdk。JDK:(Java Development Kit) Java语言的软件开发工具包,Java核心,包括Java运行环境、类库、Java开发工具,简单的说JDK就是面向Java开发人员使用的SDK 。

我的jdk、sdk、ndk在android studio下载安装的,也可以其他途径下载安装

下载并安装apache ant。下载路径http://ant.apache.org/bindownload.cgi

二、Qt Creator开发环境配置

在qt creator中,工具-》选项。选择设备,选android选项卡,配置上一步jdk、sdk、ndk如下图。

怎么让qt程序在Android系统上运行

 我的这些路径都是从android studio中project structure->sdk location里面拷过来的。

怎么让qt程序在Android系统上运行

配置时应该根据自己实际安装路径配置。

配置avd管理器,Start AVD Manager-》Create new Android Virtual Device。可能会出现了No CPU/ABI system image available for this target的问题,如下图

怎么让qt程序在Android系统上运行

解决办法如下:

在Android Studio中安装与上图中Target对应的android版本,我的是android 7.1.1如下图

怎么让qt程序在Android系统上运行

安装完成后,再进入qt重新Start AVD Manager-》Create new Android Virtual Device就可以了。

三、新建项目

新建项目,模板选择android

怎么让qt程序在Android系统上运行

起好名字,后面默认构建套件那里选择android

怎么让qt程序在Android系统上运行

 在设计模式下,拖入一个TextLabel,内容输入Hello Qt for Android。

保存工程,点击运行,弹出选择设备,选取我的小米手机。

怎么让qt程序在Android系统上运行

点击运行,手机上出现下图所示时,点击继续安装。

怎么让qt程序在Android系统上运行

最后手机上运行效果如下。

怎么让qt程序在Android系统上运行

四、遇到的问题以及解决方法

1、构建项目时模板选择里面没有android选项。原因是没有安装android组件(Qt5.9以上版本),解决办法是使用qt安装目录下MaintenanceTool.exe添加组件。5.9一下版本需要下载qt for android版本

2、创建android虚拟机器时可能出现No CPU/ABI system image available for this target的问题,解决办法安装与上图中Target对应的android版本。详见第二部分环境配置。

3、使用时MaintenanceTool.exe需要临时资料代理库http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/mac_x64/root/qt/

参考文档:Windows下用QtCreator和C++写Android程序-上

Qt5.12.2开发Android环境搭建

Qt 维护工具MaintenanceTool.exe 使用