目标

用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 后,可以在 图形界面中选择需要下载的包。

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

下载 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 按键?)。


ABI is incompatible 问题

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

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

程序图标以及运行结果




在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 的配置环境下这个插件没有预先编译好,应该要想办法自己编译这个插件的驱动程序。


更多相关文章

  1. 个人收集的Android开发相关网站集
  2. Api级别详解
  3. android导入项目出现style错误,menu错误
  4. java虚拟机理解
  5. NDK 编译可执行程序
  6. Android(安卓)使用 kotlin 协程
  7. OPhone开发环境设置备忘录
  8. Android版本更新下载apk自动安装的方法
  9. android PhoneGap 自定义插件 发现信息 转

随机推荐

  1. python模块导入原理
  2. springcloud+eureka整合阿里seata-saga模
  3. MySQL死锁系列-线上死锁问题排查思路
  4. Java泛型Type
  5. MySQL 的 join 功能弱爆了?
  6. konicaminolta柯尼卡美能达打印机统驱动
  7. SpringBoot+Maven热部署(IDEA)
  8. 图解Android事件传递之View篇
  9. 编程小技巧之 Linux 文本处理命令(二)
  10. jQuery入门学习一