Qt5.3 For Andoid 安装过程

目标

用Qt For Android 产生一个可以在Android 目标机上运行的 APK (版本 2.3.6)


准备 Android 开发环境

准备JDK

最新版本的下载地址:

"http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-windows-i586.exe"

一路确认安装,使用默认的安装地址: C:\Program Files\Java\jdk1.7.0_55

完成后需设置JAVA环境变量:

"JAVA_HOME = C:\Program Files\Java\jdk1.7.0_55"

"classpath = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar"

在PATH中添加 %JAVA_HOME%\bin;


准备Android SDK和虚拟机

下载android-ndk-r9d

"http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip"

adt-bundle

"http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86-20140321.zip"

ants


把这些文件放到任意一个地方(不要有中文路径),并解压缩。然后加入相应的环境变量。

比如我把这些文件都解压缩到这个目录: D:\AndroidDevelop

NDK_ROOT=D:\AndroidDevelop\android-ndk-r9d

ANDROID_SDK=D:\AndroidDevelop\adt-bundle-windows-x86-20140321

在PATH中加入如下地址:

"%JAVA_HOME%\bin;%ANT_HOME%\bin;%NDK_ROOT%;%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools"


下载Android包

默认情况下,\adt-bundle-windows-x86-20140321 只下载了 最新的Andorid版本的API。我的目标机器是 2.3.6版本的软件,因此需要下载2.3版本的API。在\adt-bundle-windows-x86-20140321 目录下,运行 SDK Manager.exe 后,可以在 图形界面中选择需要下载的包。

Qt5.3 For Andoid 安装过程_第1张图片

然后就是漫长的下载,安装过程。有的时候会下载失败,就换个时间重试。

下载 QT

下载地址如下:

"http://download.qt-project.org/official_releases/qt/5.3/5.3.0/qt-opensource-windows-x86-android-5.3.0.exe"

如果需要支持老版本的话(2.3,2,2),那么在安装的时候需要勾选 Andorid ArmV5 编译套件。

在安装完成后,在 工具-》选项-》Andorid 菜单中分别输入你的 JDK,NDK,SDK路径。如果已经配置好虚拟机了,那么AVD应该会自动出现在AVC列表里头的(但是需要等一会,或者按下Add 还是 Start AVD Manager 按键?)。

Qt5.3 For Andoid 安装过程_第2张图片

ABI is incompatible 问题

如果在项目构建类型中选择了 ArmV7 版本进行构建的话。运行时选择设备的时候会发现无法使用用Android 2.3.3版本的虚拟机。

Qt5.3 For Andoid 安装过程_第3张图片

于是我就首先卸载QT,在重装的时候勾选了 Adndorid ArmV5 开发包,并以 ARMV5的方式重新构建就可以了。

程序图标以及运行结果


Qt5.3 For Andoid 安装过程_第4张图片


Qt5.3 For Andoid 安装过程_第5张图片


在Andorid 下,MYSql 驱动无法加载的问题

在Andorid的配置下运行时,希望使用MySQL来打开远程数据库。当运行到Open的时候会失败,打印出来的错误信息是这样的:

W/Qt ( 444): kernel\qsqldatabase.cpp:785 (void QSqlDatabasePrivate::init(const QString&)): QSqlDatabase: QMYSQL driver not loaded

W/Qt ( 444): kernel\qsqldatabase.cpp:786 (void QSqlDatabasePrivate::init(const QString&)): QSqlDatabase: available drivers: QSQLITE

D/Qt ( 444): mainwindow.cpp:31 (MainWindow::MainWindow(QWidget*)): this,warning,failure

D/Qt ( 444): mainwindow.cpp:32 (MainWindow::MainWindow(QWidget*)): QSqlError("", "Driver not loaded", "Driver not loaded")

在使用X86配置的时候进行运行则没有这个问题。问题的原因可能是 MYSQL驱动是个插件,在Andord 的配置环境下这个插件没有预先编译好,应该要想办法自己编译这个插件的驱动程序。


你可能感兴趣的:(android,qt5)