为了能够在Qt上编译Android程序,需要搭建Android的开发环境。(注意只有Qt5.2以后的版本才支持Android开发。)
下载以下安装包:
JDK :
http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.tar.gz
android-sdk(不是Android Studio):
https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
android-ndk:
http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
apache-ant:https://ant.apache.org/
安装JDK:
新建文件夹/usr/local/android将jdk-7u79-linux-x64.tar.gz解压后拷贝到/usr/local/android
在~/.bashrc中增加以下环境变量:
export JAVA_HOME=/usr/local/android/jdk1.8.0_92
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib。
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin。
保存配置并执行source ~/.bashrc命令,使配置立即生效。
运行命令:java -version能正常显示版本表明配置成功。
安装Android SDK:
将android-sdk_r24.4.1-linux.tgz解压后拷贝到/usr/local/android
在~/.bashrc中增加以下环境变量:
export SDK_HOME=/usr/local/android/android-sdk-linux
export PATH=$PATH:${SDK_HOME}/tools:${SDK_HOME}/platform-tools
source ~/.bashrc
运行命令:adb version能正常显示版本表明配置成功
运行命令:android启动SDK管理器,安装必要包(若使用Android虚拟机,需要选择预编译的镜像,如ARM EABI v7a System Image;SDK Platform是每个API Level必选的;Documentaion for Android SDK建议选择一个;Sources for Android SDK建议也选择一个;Samples for SDK也建议选择一个。另外,API10以下就不要选择了,因为Qt不支持。)
安装NDK:
将android-ndk-r12b-linux-x86_64.zip解压后拷贝到/usr/local/android
在~/.bashrc中增加以下环境变量:
NDK_HOME=/usr/local/android/android-ndk-r12b
export PATH=$PATH:$NDK_HOME
安装ant
将apache-ant-1.9.7-bin.tar.gz解压后拷贝到/usr/local/android
在~/.bashrc中增加以下环境变量:
export ANT_HOME=/usr/local/android/apache-ant-1.9.7
export PATH=$PATH:${ANT_HOME}/bin
执行source ~/.bashrc命令
运行命令:ant提示”Buildfile: build.xml does not exist!”为正常
.bashrc配置:
外围的准备工具基本就绪,,接下来是Qt Creator中与Android相关的配置了。打开“工具”菜单下的“选项”,进入Android配置界面,如下图所示:
这里,如果需要创建Android虚拟机,可以选择Add,添加新的虚拟设备。将上面配置好的JDK,SDK,NDK和Ant的地址添加进去。应用后,在构建和运行界面中可以找到Android的构建套件,如下图所示:
创建Android项目:
打开Qt Creator,创建新的项目,在构建套件中要选择Android 套件。
在类信息中,选择QWidget基类,取消创建界面。
项目配置:
创建好Helloworld项目后,在项目选项中,添加构建套件Android for armeabi-v7a,在构建配置中选择Release。
点击Build Android APK后面的详情,如下图所示。Android build SDK可以选择应用针对的目标SDK的版本,实际上这个配置选项对应Android APK主文件AndroidManifest.xml中的android:targetSdkVersion配置项。
Sign package在生成APK文件时需要,这里我们需要创建一个新的秘钥文件(创建一次就够了,后面的工程直接调用),如图所示,其中国家代码必须要填写。
Qt Deployment中Use Ministro service to install Qt选项是使用Ministro服务安装Qt库,这是因为早期的Android手机内存比较小,不可能使用静态的Qt库或者把Qt库打包到APK文件中,而且那时候的Google市场还限制APK的大小。于是使用Ministro服务,安装APK时,若检测到没有Qt的依赖包,它会自动下载,对于如今的一些低端手机,还是有需要的。
最后是Creat Templates,用于创建AndroidManifest.xml文件,如果不点击,系统也会创建一个默认的文件。点击这个选项,如下图所示:
最后修改main文件,如下:
运行结果如下: