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

在此声明,此过程繁琐,若想用此制作软件产品,还希望大家再等到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下可输入sudo apt-get install openjdk-6-jre

Ant。

2、下载Qt5.1.0Beta

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

3、解压源码包

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

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

unzip -a Qt5.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就在哪儿,这样可以节省make install步骤,但是需要的同学可以试着加上-prefix参数,设置安装的位置。这里我就按照官网上的步骤顺势写出configure了。

./configure -developer-build -xplatform android-g++ -nomake tests -nomake examples -android-ndk 你的NDK路径 -android-sdk 你的SDK路径 -android-ndk-host 是32位Linux操作系统就填linux-x86,64位就填linux-x86_64 -skip qttranslations -skip qtwebkit -skip qtserialport -skip qtwebkit-examples

以下是我的configure参数

./configure -developer-build -xplatform android-g++ -nomake tests -nomake examples -android-ndk /home/jiangcaiyang/Programs/android-ndk-r8e -android-sdk /home/jiangcaiyang/Programs/adt-bundle-linux-x86-20130514/sdk -android-ndk-host linux-x86 -skip qttranslations -skip qtwebkit -skip qtserialport -skip qtwebkit-examples

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

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

5、开始make

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

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

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

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

export ANDROID_API_VERSION=android-17

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

export JAVA_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中。(这里以我安装的路径为例)

为了防止出现QtMultimedia for Android requires API level 11错误,需要将$${QT_DIR}/qtmultimedia/qtmultimedia.pro这条语句:

    !qtCompileTest(android):error("QtMultimedia for Android requires API level 11")

使用#号注释掉。

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

6、开始make install(可选)

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

7、设置环境变量

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

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

搭建Qt5.1.0Beta的Android开发环境_第1张图片

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

搭建Qt5.1.0Beta的Android开发环境_第2张图片

这里Automatically create kits for Android tool chains可方便了,在构建套件里面自动添加了三个安卓套件,只是编译器不相同。随后启动Android AVD管理器,如下图:

搭建Qt5.1.0Beta的Android开发环境_第3张图片

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

搭建Qt5.1.0Beta的Android开发环境_第4张图片

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

8、构建和运行

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

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

搭建Qt5.1.0Beta的Android开发环境_第5张图片

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

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

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

搭建Qt5.1.0Beta的Android开发环境_第6张图片

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

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

搭建Qt5.1.0Beta的Android开发环境_第7张图片

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

搭建Qt5.1.0Beta的Android开发环境_第8张图片

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

参考:

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

你可能感兴趣的:(搭建Qt5.1.0Beta的Android开发环境)