`
jgsj
  • 浏览: 962337 次
文章分类
社区版块
存档分类
最新评论

搭建Qt5.1.0Beta的Android开发环境

 
阅读更多

搭建Qt5.1.0Beta的Android开发环境

最近在投简历的过程中没有什么事,就抽了一个周末研究Qt5.1.0Beta的安卓开发环境该怎么搭建。两天时间过去了,也算是有些小成果吧,在这里给大家分享分享。

首先让我们看看Qt5.1.0Beta的新特性。除了一些模块内大大小小的更改外,我们还发现了它可以支持静态编译和安卓和iOS构建目标的支持。静态编译这部分先放在一边,我们来看看Qt5.1.0是如何支持安卓开发环境的。

在此声明,此过程繁琐,若想用此制作软件产品,还希望大家再等到Qt5.2的稳定版发布。此教程仅适用于Linux操作系统,我使用的版本是Ubuntu13.04。

原创文章,反对未声明的引用。原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/8978815

1、准备一些必要的开发包

按照qt-project里面的指示,我们需要下载安卓的SDK,NDK,Apache的Ant,以及OpenJDK。安卓的SDK和NDK是在构建Qt安卓版本必须的开发包,在make阶段需要用到SDK中的jar包和tools,需要用到NDK中的头文件和源文件以实现对QtAndroid插件的封装。而OpenJDK和Ant则是在应用程序打包成apk的时候必须用到的。为了方便大家,我把下载地址放出来。

安卓SDK,这里我下载了ADT,里面附带了Eclipse和SDK,Eclipse请无视掉吧。

安卓NDK

OpenJDK,在Ubuntu下可输入sudoapt-getinstallopenjdk-6-jre

Ant

2、下载Qt5.1.0Beta

不要下载二进制包,我们要自己编译,所以我们需要下载源码包。这里给出了链接,以后链接失效了,还可以在这里查找。

3、解压源码包

本来解压什么的应该不是什么问题,但在后面阶段出现了莫名的^M符号,这时我开始怀疑是不是解压这一步出错了……

其实开始解压是使用GUI的归档管理器来进行的,默认情况下会出现文本编码的问题。所以在解压缩的时候,为了防止将源码的文本文件更改文本格式,需要在控制台下手动解压。假设已进入“下载”文件夹,压缩包名为Qt5.1.0Beta.zip,解压的位置是~/Programs/Qt5.1.0ForAndroid,那么需要这么写:

unzip-aQt5.1.0Beta.zip-d~/Programs/Qt5.1.0ForAndroid

取消qt-everywhere-opensource-src-5.1.0-beta1文件夹,直接将其中的内容放在Qt5.1.0ForAndroid中,我喜欢简单的文件夹名。

4、开始configure

解压完毕后,进入~/Programs/Qt5.1.0ForAndroid文件夹,这里开始了configure阶段了。我倾向于解压在哪儿,qmake就在哪儿,这样可以节省makeinstall步骤,但是需要的同学可以试着加上-prefix参数,设置安装的位置。这里我就按照官网上的步骤顺势写出configure了。

./configure-developer-build-xplatformandroid-g++-nomaketests-nomakeexamples-android-ndk你的NDK路径-android-sdk你的SDK路径-android-ndk-host是32位Linux操作系统就填linux-x86,64位就填linux-x86_64-skipqttranslations-skipqtwebkit-skipqtserialport-skipqtwebkit-examples

以下是我的configure参数

./configure-developer-build-xplatformandroid-g++-nomaketests-nomakeexamples-android-ndk/home/jiangcaiyang/Programs/android-ndk-r8e-android-sdk/home/jiangcaiyang/Programs/adt-bundle-linux-x86-20130514/sdk-android-ndk-hostlinux-x86-skipqttranslations-skipqtwebkit-skipqtserialport-skipqtwebkit-examples

如果大家默认都选开源的版本,那么上面的参数中添加-opensource,可以减少询问。

另外不可静态编译安卓版本,因为在链接自己写的代码的目标文件时会出现cannotfind-lqandroid错误。看来qandroid还是必须要以插件的形式存在才行。

5、开始make

make阶段的错误出现得最多,所以要格外重视。

如果没有做准备工作,那么make似乎也能进行,但是编译的库函数不完全,以至于无法在模拟器上运行apk程序。

为了防止找不到相关的路径,需要添加两个安卓环境变量。这里直接在控制台上输入:

exportANDROID_SDK_ROOT=/home/jiangcaiyang/Programs/adt-bundle-linux-x86-20130514/sdk

exportANDROID_API_VERSION=android-17

为了防止找不到javac等java编译工具,需要在/etc/profile中添加JAVA_HOME环境变量:

exportJAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386

为了防止找不到dx工具和dx.jar包,需要将dx和dx.jar从adt-bundle-linux-x86-20130514/sdk/build-tools/android-4.2.2和adt-bundle-linux-x86-20130514/sdk/build-tools/android-4.2.2/lib中转至/home/jiangcaiyang/Programs/adt-bundle-linux-x86-20130514/sdk/platform-tools中。(这里以我安装的路径为例)

为了防止出现QtMultimediaforAndroidrequiresAPIlevel11错误,需要将$${QT_DIR}/qtmultimedia/qtmultimedia.pro这条语句:

!qtCompileTest(android):error("QtMultimediaforAndroidrequiresAPIlevel11")

使用#号注释掉。

如果一切顺利,将会看不到任何PROJECTERROR。

6、开始makeinstall(可选)

如果在configure阶段指定了-prefix,那么需要makeinstall。

7、设置环境变量

加上此前的JAVA_HOME,我们还需要的几个环境变量,不过是在QtCreator上使用的,不难。

安装QtCreator2.7,并打开。点击工具➡选项,进入选项页面。首先设置的是Qt版本,如下图。


随后设置Android选项。如下图:


这里AutomaticallycreatekitsforAndroidtoolchains可方便了,在构建套件里面自动添加了三个安卓套件,只是编译器不相同。随后启动AndroidAVD管理器,如下图:


点击New...添加一个模拟器,如下图:


设置一些参数就好了,随后可以点击Start...启动模拟器。如果觉得模拟器画面很卡,那么可以勾选UseHostGPU选项。

8、构建和运行

一起都设置好了,我们可以拿一个程序测试了。这里我测试了Qt的一个程序:appchooser(位于$${QT_DIR}/qtbase/examples/widgets/animation中)。

用QtCreator打开appchooser.pro文件,在项目选项卡中选择添加构建套件,将我们刚刚设置好的添加进来,我这会儿选择的是系统自动生成的,因为小机器人的图标很好看!


可以看到这里多出了很多文件,那是在Eclipse中非常常见的文件,其实我也不懂。不过这不影响,还是和原来那样,点击小锤子构建,点击绿三角运行。这里运行的时候打开模拟器要花很长时间,界面会卡死一段时间,这时可以准备一杯咖啡啊。

打开了模拟器也不见得能够制作成apk包。因为如果JAVA_HOME变量和Ant路径设置不正确或者JDK版本混乱的话,一样无法顺利打包,所以前面的步骤需要引起注意。

制作成了apk包也不见得能够正确地运行,这很可能是Qt库的问题,看看项目选项卡,按照官网显示的步骤,需要这样设置:


这样才能在模拟器上运行。也可以安装Ministro包,关于真机调试以及部署方面这里我就没有再研究下去了。

好了,看看我们的成果吧。


屏幕太小了,换个大一点的屏幕!


如果大家有什么问题的话,可以留言给我,我会尽我所能帮大家解决的。

参考:

qt-projectwiki:http://qt-project.org/wiki/Qt5ForAndroid

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics