用Qt For Android 产生一个可以在Android 目标机上运行的 APK (版本 2.3.6)
最新版本的下载地址:
"http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-windows-i586.exe"
一路确认安装,使用默认的安装地址: C:\Program Files\Java\jdk1.7.0_55
"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;
"http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip"
"http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86-20140321.zip"
把这些文件放到任意一个地方(不要有中文路径),并解压缩。然后加入相应的环境变量。
比如我把这些文件都解压缩到这个目录: 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"
默认情况下,\adt-bundle-windows-x86-20140321 只下载了 最新的Andorid版本的API。我的目标机器是 2.3.6版本的软件,因此需要下载2.3版本的API。在\adt-bundle-windows-x86-20140321 目录下,运行 SDK Manager.exe 后,可以在 图形界面中选择需要下载的包。
然后就是漫长的下载,安装过程。有的时候会下载失败,就换个时间重试。
下载地址如下:
"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 按键?)。
如果在项目构建类型中选择了 ArmV7 版本进行构建的话。运行时选择设备的时候会发现无法使用用Android 2.3.3版本的虚拟机。
于是我就首先卸载QT,在重装的时候勾选了 Adndorid ArmV5 开发包,并以 ARMV5的方式重新构建就可以了。
在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 的配置环境下这个插件没有预先编译好,应该要想办法自己编译这个插件的驱动程序。