前言:
说原创也不全是自我创新,说转载绝非复制粘帖。
各位好,我是高晓松。。。不,我是搞笑.宋,我有个弟弟,在英超踢球,而我,是一个会写程序的黑人(再说一边,我是在中国晒黑的,不是非洲移民)。
废话不说,鉴于Qt越搞越大,大有一套IDE吃遍各平台的气势,所以我决定,跟他走。
说走就走,现在最流行的就是移动开发,所以今天开始,我就围绕“一套代码,交叉编译ios+andriod"这个宏(xu)伟(jia)目(guang)标(gao)做一系列文章。
第一篇 Qt与安卓,下载与安装
要写Qt程序,必须下载安装Qt先。有钱你就买企业版,一次买两套,一套用来编码,一套用来编译。
我没钱,所以我在http://qt-project.org/downloads界面,找了个免费版下载。下载路径是 download.qt-project.org/official_releases/qt/5.2/5.2.1/qt-opensource-linux-x64-android-5.2.1.run.mirrorlist。 找到这个路径的诀窍是点击前一个download页面上那些下载列表项旁边的info小字。 具体我下载的文件是qt-opensource-linux-x64-android-5.2.1.run 这个文件846M大,下载这个run文件的好处是安装时不用再下载其他文件了。
你也可以下载其他版本,你要是网速够快,甚至可以下载两个版本,一套用来编码,一套用来编译,壕感油然而生,有木有?
因为我是liunx系统(什么,刚才那个文件名里你就看出我是用liunx了么?少年你怎么那么天真,你咋知道那个是操作系统名称?人家又没说,也许那是Qt开发人员在夸我linux---你牛x死 呢?),在liunx系统下,需要使用chmod +x xxx.run ,使得run文件可以执行。然后就执行这个run文件。选择一个路径,安装前要选协议,我选择LPGL。选这个协议有什么好处呢? 啊,好处就是,他名字略长,我们都希望自己略长对不对? 那有人说 Apache不是更长?唉,真是钻牛角尖,别在意细节好么?
好了,像读者您这样根骨雄奇,器宇不凡之辈,想来不会在安装Qt上卡住,那接下来就是在Qt中加入安卓sdk了,想要编写android程序,需要下载一些android的SDK啊ndk啊之类的东西,具体网址是:
sdk下载路径是:developer.android.com/sdk/index.html(下载ADT Bundle(Android Developer Tool)版本的sdk)
ndk下载路径是在http://developer.android.com/tools/sdk/ndk/index.html 下载android的ndk
然后在http://ant.apache.org/bindownload.cgi 下载apache-ant,目前我下载的是apache-ant-1.9.4-bin.tar.bz2
最后是安装Openjdk,访问网页:http://openjdk.java.net/install/, 在liunx上可以直接运行命令来安装Openjdk Debian, Ubuntu, etc. 如果是Ubuntu或者Debian,那么命令是 sudo apt-get install openjdk-7-jre, 如果是Fedora, Oracle Linux, Red Hat Enterprise Linux ,那么命令是 su -c "yum install java-1.7.0-openjdk",需要管理员帐号。
接下来启动qt creator 3,在工具 ->选项 ->左侧列表android中配置sdk,ndk,ant jdk的路径 ,我这里sdk 和ndk只是下载后解压,ant似乎是安装好了的,openjdk是安装好的,安装过的qtc3能自己认出来。
配置完成后点击按钮 : "启动android avd管理器"
在Android Virtual Device Manager界面上有一个new 按钮,点击后,可以配置了,在配置界面有不少型号的手机,按照自己的想法配吧,目前对于怎么配我也没有啥自己的想法。配置完 ok -> ok,好了,最好是有一台真机对应,对于开发有好处。
配置完,选择刚才配置的AVD,点击"start“按钮,耐心等待把。
编译代码时,如果各位的操作系统是64位的,那么有可能出现error,libstdc++.so.6文件找不到,实际是需要安装32位libstdc++
centos下安装命令是yum -y install libstdc++.i386,另外可以先用yum list |grep libstdc++查看一下有哪些可以安装(操作系统自带的64位stdc++库看来和安卓sdk有些不匹配)
到此为止,相信各位至少能作出一个“Hello world, my phone!” 来了。
今后会有更多的、更好的、更高阶的移动端开发心得,敬(bi)请(xu)期(tai)待(jian)
ps: 最近写Qt Mobile程序,觉得这个5.2.1真是坑爹啊,bug真多,我换成5.3.0了。 另外文档中忘记说了,要编译Qt Mobile arm程序,需要下载jdk 1.8.0,具体网址是:http://www.oracle.com/technetwork/java/javase/downloads 这个是下载用的网址,是下载jdk for arm的,网址可能有变化(如果与成文时间有较大差距的话)
ubuntu 下安装配置 jdk,详见:http://www.neversaydie.cc/ubuntu-install-jdk-in-detailed/
在解压adt bundle版的andriod sdk后记得运行android manager程序,就是那个bin目录里的可执行文本文件。
另外想要将程序通过ant打包成apk程序的话记得千万要做两件事:定义一个key 。以及将相关路径加到系统环境变量里
export JAVA_HOME=/usr/java/jdk1.8.0_05
export ANT_HOME=/home/gxx/Codes/apache-ant-1.9.4
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${ANT_HOME}/lib:${JAVA_HOME}/lib:${JAVA_HOME}/jre/bin:${JRE_HOME}/lib:${ANT_HOME}/lib:${ANT_HOME}/lib/ant-launcher.jar
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
另外在64位操作系统,利用ant打包时很悲催滴需要额外增加一些32位的库文件(因为ant及android的64位支持工作不是很到位)
以64位 ubuntu操作系统为例:sudo apt-get install lib32stdc++6 lib32z1 lib32z1-dev
这三个文件是需要重新安装的。
我的电脑是centos, lib32stdc++6用yum install了,lib32z需要自己去yum install zlib.i686网站下载安装。