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

Qt 5开发Android应用图文详解 (更新Win7+Qt5.7)

229
回复
161733
查看
  [复制链接]
累计签到:1567 天
连续签到:1 天
来源: Android 2013-5-24 01:55:34 显示全部楼层 |阅读模式
版权声明

该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处!


更新

更新:2016-10-01
这次使用Win 7系统和最新的Qt 5.7来讲解下环境的搭建过程,所有需要的工具都使用了最新版本并上传到了下载页面(以前的版本下载连接已删除,请使用最新版本)。(详细内容更新到了本教程的最后面)


更新:2015-1-22
很多网友还是在搭建开发环境的时候出现问题,这次使用Win 7系统和最新的Qt 5.4来讲解下环境的搭建过程,所有需要的工具都上传到了下载页面,所以按照教程来做,应该不会再出现太多问题了。(详细内容更新到了本教程的最后面)


更新:2013-10-23
Qt 5.2beta版发布了,不过遗憾的是,在Windows上测试,Android模拟器运行依然有问题(Linux下还没有测试)。所以还是不要对模拟器抱有什么幻想了,后面开发主要用实体机来完成吧。

Qt 5.2beta版下载页面:http://download.qt-project.org/d ... qt/5.2/5.2.0-beta1/
Windows下面Android开发应该用:qt-windows-opensource-5.2.0-beta1-android-x86-win32-offline.exe
Linux下面Android开发应该用:qt-linux-opensource-5.2.0-beta1-android-x86-offline.run


更新:2013-9-10
在Windows xp下面基于Qt 5.1.1的Android开发教程。(祥见该教程最后面的更新内容


更新:2013-8-8
社区的Joey_Chan 站长已经开始了Qt5.1及Android教程编写,大家来围观吧: Qt安卓教程(1): 从Qt5.1开始


更新:2013-8-5

最近经常有网友环境设置出现问题,这里再强调一下:

第6步,我们需要的是jdk,而不只是jre。所以,在ubuntu里面要运行下面的命令来安装:

sudo apt-get install openjdk-7-jdk

然后是第9步,设置Ant的路径,这里最后默认可能是“ant.bat”,一定要改成“ant”啊,不然就出错了(因为.bat是Windows里面的批处理文件,在linux下面是无法运行的。)


更新:2013-7-3

Qt 5.1版本正式发布了!http://www.qter.org/forum.php?mod=viewthread&tid=361

如何发布应用到Google Play应用商店中

更新:2013-6-13

Qt 5.1 rc版本已经推出: http://download.qt-project.org/s ... kups/2013-06-12-53/

里面包含了Windows下的版本:qt-windows-opensource-5.1.0-rc1-android-x86-win32-offline-2013-06-12-53.exe
大家可以测试一下!


正文


Qt 5.1 beta版发布已经好几天了,今天终于有时间测试一下该版本到底能否将应用移植到Android上,最终的答案是肯定的{:soso_e112:}!

系统: ubuntu 12.04  32位     (注意:现在提供的版本,貌似只有linux版本才有android开发库,这个可以在进行下面第一步的时候查看!

下面先来看一下最终的效果:




1.首先去http://download.qt-project.org/d ... qt/5.1/5.1.0-beta1/下载Qt 5.1.0 beta版本,因为这里是在Ubuntu下面,所以下载:qt-linux-opensource-5.1.0-beta1-android-x86-offline.run

安装时要特别注意,一定要选择上Android armv7组件,只有这样才会安装用于编译android程序的Qt库;因为大多数android手机都是arm平台的,所以那个Android x86选不选就可以随意了!如下图所示。



2.安装完以后运行Qt Creator(不会找不到吧?在安装目录的tools目录里面啊!),然后在帮助中索引Android关键字,如下图所示。这时就出现了如何将Qt 5的程序发布到Android上的文档了。我们下面的步骤都是按照这里来的!(呵呵,不是从网上拼凑的啊,貌似网上现在还没有相关教程!)



3.首先安装 The Android SDK Tools(Android官方开发包),点击那个链接就自动跳转到相关页面了,直接下载即可,这里已经为你选择好系统了(这是根据你所使用的系统判断出来的)。如下图所示。下载完成后要解压缩的。



4.下面下载第二个 The Android NDK (实现用C++来开发Android程序)。进入页面,因为我是32位的ubuntu,所以选择了倒数第二个,大家根据自己的实际情况来选择吧。如下图所示。下载完成后解压缩。



5.安装Apache Ant v1.8 or later (Java软件工具),进入界面以后随意下载一个即可。如下图所示。下载完成后要解压缩。



6.安装最后的OpenJDK v6 or later(Java开发工具开源版),这里链接到新的页面,显示了安装方法。要注意了,我们需要的是jdk,而不只是jre,如下图所示。所以,在ubuntu里面要运行下面的命令来安装:

sudo apt-get install openjdk-7-jdk



7.工具安装完成了。按照教程里面说的,最好使用Android SDK Manager来更新一下SDK,这个可以在SDK的tools目录下执行下面的命令:

./android update sdk

然后更新里面的tools和API,如下图所示(我这里是更新完以后截的图,大家那里应该不是显示Installed)。其实,如果大家做过Android开发,可以在eclipse里面直接运行管理器进行更新的。

我感觉这一步不是必须的,不过大家如果不放心就做一下吧,但是很费时间的啊!



8.下面回到Qt Creator中,查看工具→选项→构建和运行,会发现这里构建套件已经有Android的了,大家也可以设置一个普通桌面版本的,这样就可以像普通Qt程序那样编译运行了。如下图所示。



9.下面进入到Android页面里面,这里需要设置前面安装的SDK和NDK的路径,注意SDK一定要指定到sdk那个目录。下面勾选上Automatically create kits for Android tool chains选项;因为我们没有mips平台的库,所以下面有个三角警告,不用理它。再下面就是Ant的路径了,这里最后默认可能是“ant.bat”,一定要改成“ant”啊,不然就出错了(因为.bat是Windows里面的批处理文件,在linux下面是无法运行的。)最后就是点击“启动Android AVD管理器”来创建一个android模拟器,最终效果如下图所示。还有一点要提醒,如果大家在后面运行程序的时候avd没有自动启动,那么可以在这里来启动。



下面的图是我已经建立了avd(Andorid Virtual Device 即Android虚拟设备,也就是Android手机模拟器)以后截的,大家第一次运行需要点击New来新建的。



新建avd如下图所示,当然也可以改成别的配置。



10.下面我们来创建Qt项目,这里创建了一个Qt Gui应用,当选择构建套件的时候,因为有很多个,这里只需要选中一个就行了,不过要注意,在设置AVD的时候,选择的是arm平台,所以这里一定得用arm的套件,而不能选择x86的。如下图所示。



11.完成后,直接运行就可以了。这时会先启动AVD,刚开始有点慢,系统需要启动一会儿,如下图所示。当Android系统运行以后,就会编译执行Qt程序了,当然,会直接在AVD中运行的。最终效果就是本教程的第一幅图所示。




12.如果想对Android包进行配置,可以在项目模式进行。如下图所示。



13.关于Qt现在对Android开发支持哪些内容,已经在帮助文档的一开始就列出来了。如下图所示。





现在Qt 5.1还是测试版本,也许会有很多bug,不过根据我们教程中的流程来看,Qt已经做得非常不错了!这让我们这些Qter感到很欣慰!




更新:2013-9-10  Windows平台

前面推出了linux下面的Android开发流程的教程,当时用的是Qt 5.1的测试版,虽然还存在很多问题,但是在Linux下面搭建开发环境还是比较顺利的。至于Windows下面搭建环境是大同小异的,不过,这些天来,有太多的小伙伴在Windows下面搭建环境都出现了各种各样的问题,为了向大家表明,按照正常的套路搭建环境是不会出现什么问题的,今天特地抽出时间,使用最新的Qt 5.1.1版本,在Windows XP下面更新了该教程。

1.下载Qt 5.1.1

到这里:http://download.qt-project.org/official_releases/qt/5.1/5.1.1/

下载:qt-windows-opensource-5.1.1-android-x86-win32-offline.exe  (一定要是Android版本的啊)

2.安装Qt 5.1.1

这个没有什么好说的,一切默认即可

3.下载Andorid的SDK和NDK

http://developer.android.com/sdk/index.html下载SDK (点击那个大大的按钮即可)

然后解压缩,我这里解压缩到了D盘;

http://developer.android.com/tools/sdk/ndk/index.html下载,
我的系统是32位的,所以下载了android-ndk-r9-windows-x86.zip
然后解压缩,我这里解压缩到了D盘

4.下载apache-ant-1.9.2-bin

http://ant.apache.org/bindownload.cgi下载 apache-ant-1.9.2-bin.zip
然后解压缩,我这里解压缩到了D盘

5.下载JDK

http://www.oracle.com/technetwor ... nloads-1880260.html下载最新的JDK

这里下载了jdk-7u40-windows-i586.exe  (可能需要先勾选上面的服务条款啊,这里下载的是Windows x86 那个版本的)

完成后安装即可,我这里安装到了D盘。

6.在Qt Creator中进行设置

如果大家已经安装了多个Qt Creator,一定要使用Qt 5.1.1安装时自带的Qt Creator啊,这个可以在开始菜单或者Qt 5.1.1的安装目录里面找到。

打开后到 工具->选项 -> Android  页面,设置几个工具的路径,最终如下图所示。



然后启动 Android AVD管理器,将添加的myAVD设置如下图所示。




然后可以在AVD管理器中点击Start,然后点击Launch来测试模拟器是否可以正常运行。如下图所示。




完成后的Android设置界面如下图所示,现在要点击 应用 按钮来保存设置。



这时可以看一下 构建和运行 的 Kit套件中已经有 Android的开发套件了。如下图所示。




7.测试程序。

新建Qt Gui应用,在选择构建套件时一定要选择Android版本的。如下图所示。



8.运行程序。

完成后可以更改下界面,然后选择Android的Release版本进行编译运行,注意一定是要Release版本的,不然可能无法部署。如下图所示。(Debug版本的问题可能与ADB有关,还没有去研究,有了解的朋友可以回复一下)




9.最终的效果。模拟器启动可能会有点慢,大家耐心等待。完成后在源码目录里面就会出现apk安装包。




10.一般的Gui程序放到手机上布局会出现问题,建议大家运行一个QML程序试试效果。


祝小伙伴们好运!




更新:2015-1-22      使用Win 7 + Qt 5.4.0来创建开发环境。


1、首先下载Android版本的Qt 5.4.0,下载地址:

要下载的文件为:

下载完成后进行安装。


2、打开Qt Creator,在帮助中查看Connecting Android Devices关键字。里面有创建Android开发环境需要使用的工具软件以及设置方法,大家可以参考一下。




3、到社区下载页面下载所需软件:adt-bundle-windows-x86-20130729android-ndk-r9-windows-x86apache-ant-1.9.2-binjdk-7u40-windows-i586。完成后进行解压。



4、安装jdk-7u40-windows-i586.exe,按照提示安装即可。


5、打开Qt Creator中的工具→选项菜单项,然后选择Android选项,设置前面下载的工具的路径,大家可以参考下图。




6、为了可以使用模拟器,这里单击Start AVD Manger按钮,在Device Definitions页面选择一个已定义的设备,如下图所示。





7、为了模拟器可以正常运行,RAM不要超过700M,比如这里设置为512




8、设置完成后,会在Android Virtual Devices中显示刚才选择的虚拟设备。




9、回到Android配置界面,单击Apply按钮应用设置。




这时会在AVD管理器中显示前面设置的虚拟设备。





10、在构建和运行界面,可以看到已经生成了Android构建套件,这表明已经可以进行Android开发了。




11、新建一个Qt Quick Application




项目名称这里设置为helloandroid




Kit Selection页面一定要选择上Android for armeabi-v7a选项,这样才可以使用这个开发套件来编译出Android程序。





12、创建后项目后,先编译运行一个桌面版本的程序测试效果,可以直接按下Ctrl + R快捷键编译运行程序。




13、现在选择Android构建套件,来编译Android程序。如下图所示。




14、再次按下Ctrl + R快捷键,可以看到现在可用的设备只有前面创建的虚拟机,单击OK按钮,启动虚拟机,会自动编译程序并在虚拟机上运行。





15、可以发现,虚拟机运行十分缓慢,并且显示效果不尽人意。




16、为了获得更好更真实的体验,我们下面使用真机来测试程序。这里使用了小米2手机进行演示,大家可以使用其他手机设备,过程是类似的,但是在操作以前,确保电脑上安装了手机的驱动程序。

首先打开手机的USB调试,一般是在选项中打开开发者选项中的USB调试。小米手机设置如下图所示。



17、现在用USB线连接手机和电脑,在QtCreator中按下Ctrl + R键,可以看到已经出现手机设备了,但是还不可用。



这时手机上会出现是否允许USB调试的提示框,我们选择“确定”。


然后单击“Refresh Device List”按钮来更新设备列表。


       这时小米手机已经可以使用了,选择MI 2选项,并单击“OK”按钮。




18、这时手机上会显示安装程序的提示,选择“安装”。

       最后,我们的Qt程序终于在手机上运行了。效果如下图所示。


大家按照步骤来做,下载论坛提供的工具文件,应该可以很容易搭建好环境的。




2016年10月1日更新:基于Qt 5.7和最新的开发工具

下面的链接如果无法访问,可以到Qt开源社区(www.qter.org)的下载页面进行下载。

n        JDK
地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
下载文件:jdk-8u101-windows-i586.exe
n        Android SDK
地址:https://developer.android.com/studio/index.html
下载文件:android-sdk_r24.4.1-windows.zip
n        Android NDK
地址:https://developer.android.com/ndk/downloads/index.html
下载文件:android-ndk-r12b-windows-x86.zip
n        Ant
地址:http://ant.apache.org/bindownload.cgi
下载文件:apache-ant-1.9.7-bin.zip

工具软件的安装

       为了便于使用和讲解,这里将所有的工具都安装到D:\Android目录中,大家也可以安装到其他目录,在后面设置时指定正确目录即可。
n        安装JDK,双击jdk-8u101-windows-i586.exe运行安装程序,将安装目录更改为:D:\Android\Java\jdk1.8.0_101\,其他保持默认即可。
n        将android-sdk_r24.4.1-windows.zip解压缩到D:\Android。
n        将android-ndk-r12b-windows-x86.zip解压缩到D:\Android。
n        将apache-ant-1.9.7-bin.zip解压缩到D:\Android。
       下面运行Android SDK Manager(我这里的路径是:D:\Android\android-sdk-windows\SDK Manager.exe),对Android SDK进行必要的更新,默认已经勾选了一些更新内容,为了减少下载量,这里只选择需要的文件,如下图所示。读者也可以根据自己的开发需要下载其他内容。
       现在单击Install 6 packages按钮,这时会弹出Choose Packages to Install对话框,这里需要选中Accept License选项同意协议,因为这里的安装包使用了两个协议,所以还要在左侧选择AndroidSDK Preview License,然后在右侧再次选中Accept License选项同意协议,这样左侧所有选项前面都会显示对号,如下图所示,这时单击Install进行安装。
安装完成后就可以在Qt Creator中进行设置了,如下图所示。后面的使用请参考上面的内容。





本帖子中包含更多资源

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

x
参与人数 3人气 +6 收起 理由
xian2015 + 2 很详细!
caincl + 2 对我帮助很大!
Inaho.zero + 2 对我帮助很大!

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

回复

使用道具 举报

尚未签到

2013-5-24 09:12:45 显示全部楼层
很不错啊!  可以做android的开发了
回复 支持 反对

使用道具 举报

尚未签到

2013-5-24 10:13:30 显示全部楼层
补充两个疑问:
1. 静态编译。以前qt4的时候,安卓是必须要安装ministro(qt库安装器)的,用户体验非常不好,之前听说qt5可以用静态编译,我还没试过,如果是真的就最好;
2. 外部按键。也是以前qt4的时候,并不支持安卓外部按键如返回键,一按就退出程序了,也是会导致用户体验问题,希望这个版本可以解决。
回复 支持 反对

使用道具 举报

尚未签到

2013-5-24 11:56:15 显示全部楼层
编译出的apk文件?会有几十MB么。。。。
回复 支持 反对

使用道具 举报

尚未签到

2013-5-24 14:50:53 显示全部楼层
ashe0817 发表于 2013-5-24 11:56
编译出的apk文件?会有几十MB么。。。。

静态编译的文件的确有可能几十MB大小
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2013-5-24 14:55:03 显示全部楼层
我很喜欢用qt,希望qt能越来越强大!
回复 支持 反对

使用道具 举报

尚未签到

2013-5-24 21:03:00 显示全部楼层
感觉好给力啊,单元QT在安卓上开发的更深入
回复 支持 反对

使用道具 举报

累计签到:1567 天
连续签到:1 天
2013-5-24 22:15:01 显示全部楼层
Joey_Chan 发表于 2013-5-24 10:13
补充两个疑问:
1. 静态编译。以前qt4的时候,安卓是必须要安装ministro(qt库安装器)的,用户体验非常不 ...

可惜现在没有时间深入研究这个啊!如果哪个网友对这个感兴趣,可以继续研究下去,一起将这篇帖子补充完善!
回复 支持 反对

使用道具 举报

累计签到:1567 天
连续签到:1 天
2013-5-24 22:18:48 显示全部楼层
ashe0817 发表于 2013-5-24 11:56
编译出的apk文件?会有几十MB么。。。。

应该不会到几十M,虽然现在没有去具体查看生成文件的大小,不过据我感觉,应该是将Qt库发布到Android系统里面,只发布一次就可以了,所有apk包都共享这些库,这样apk包应该会很小!

所以前面Joey_Chan说的静态编译就不太实用了!
回复 支持 反对

使用道具 举报

尚未签到

2013-5-25 11:20:10 显示全部楼层
windows下什么时候能提供呢
回复 支持 反对

使用道具 举报

累计签到:1567 天
连续签到:1 天
2013-5-25 13:57:21 显示全部楼层
gaofan 发表于 2013-5-25 11:20
windows下什么时候能提供呢

因为现在beta版本的好像只有linux才有android库,所以windows版本要到下一次发布的时候了!
回复 支持 反对

使用道具 举报

尚未签到

2013-5-26 09:30:54 显示全部楼层
到底做界面,是用WIDGET好,还是用QML好?
回复 支持 反对

使用道具 举报

累计签到:29 天
连续签到:1 天
2013-5-26 12:50:25 显示全部楼层
{:soso_e142:}辛苦了,有空开个虚拟机试试
回复 支持 反对

使用道具 举报

尚未签到

2013-5-26 20:32:28 显示全部楼层
yafeilinux 发表于 2013-5-24 22:18
应该不会到几十M,虽然现在没有去具体查看生成文件的大小,不过据我感觉,应该是将Qt库发布到Android系统 ...

以前qt4的时候,就需要一个叫ministro的qt库安装器,就是你说的发布一次就行的共享库,但是站在用户的角度反而会出很大的问题:因为安卓默认肯定不会自带qt库,如果一个用户下载了用qt写的apk,安装的时候提示说需要先安装ministro,而大多小白用户根本不知道为什么要安装这个,甚至会怀疑这个ministro安不安全。
从技术角度上来说,你是对的,但是从用户角度来说,是严重不现实的。
回复 支持 反对

使用道具 举报

尚未签到

2013-5-26 21:02:46 显示全部楼层
Joey_Chan 发表于 2013-5-26 20:32
以前qt4的时候,就需要一个叫ministro的qt库安装器,就是你说的发布一次就行的共享库,但是站在用户的角 ...

是啊,希望Qt公司严重对待这个问题。
回复 支持 反对

使用道具 举报

累计签到:1567 天
连续签到:1 天
2013-5-26 22:12:29 显示全部楼层
zybook 发表于 2013-5-26 09:30
到底做界面,是用WIDGET好,还是用QML好?

这个得看具体需求了,一般的软件widget就好,如果是移动触屏设备用qml
回复 支持 反对

使用道具 举报

累计签到:1567 天
连续签到:1 天
2013-5-26 22:13:51 显示全部楼层
Joey_Chan 发表于 2013-5-26 20:32
以前qt4的时候,就需要一个叫ministro的qt库安装器,就是你说的发布一次就行的共享库,但是站在用户的角 ...

嗯。这是个问题。现在希望下个版本能给出很好的解决方案。
回复 支持 反对

使用道具 举报

尚未签到

2013-5-27 17:56:00 显示全部楼层
yafeilinux 发表于 2013-5-24 22:18
应该不会到几十M,虽然现在没有去具体查看生成文件的大小,不过据我感觉,应该是将Qt库发布到Android系统 ...

生成的RELEASE.APK,十几M,但是我部署到真机,还是有问题。
回复 支持 反对

使用道具 举报

尚未签到

2013-5-27 17:56:54 显示全部楼层
gaofan 发表于 2013-5-25 11:20
windows下什么时候能提供呢

几个礼拜后吧,尽管我是安装好了,但生成的APK,模拟器和真机都跑不了,郁闷。
回复 支持 反对

使用道具 举报

累计签到:6 天
连续签到:1 天
2013-5-29 10:31:38 显示全部楼层
肯定是需要ministro的,Qt5是把bogdan的necessitas搬来的
回复 支持 反对

使用道具 举报

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

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了