1. 随便写写
今天突然被告知手上的Android项目要交由安卓的同事来做,于是,研究了这么久的东西终于。。。派不上用场了,哎。接下来会对这段时间内的一些经验进行总结归档,一是为了以后查找相关问题的时候有迹可循,二是对于这一块我确实还挺感兴趣的,项目没了自己也会继续研究下去,相信这部分的博客会不断更新壮大的,加油!
2. 需要的东西
想要在Ubuntu下搭建Qt for Android的环境,你需要以下四样东西:
--Java JDK
--Android SDK & NDK
--Android Studio
--Qt Creator
别的都不用多说,ndk是安卓用来编译C和C++代码的,Android Studio对我来说功能就是可以管理更新SDK和AVD(Android Virtual Device),因为我的IDE必须是Qt Creator!!
因为这些东东不同的版本对于最后编译和运行都有影响,我就以我实践成功的版本来说,下面都会说明每个东东我下载的版本是哪个,如果你碰到了奇怪的问题,可能换个版本就可以了。另外稍微老一点版本的Qt还要有ant,我的Qt版本是5.12.2,并没有要求这个,所以我也没装。
3. Java JDK (jdk-8u201-linux-x64)
下载后安装到你的指定路径,并用 sudo gedit /etc/profile命令打开profile文件,在profile文件里面配置环境变量,如下:
JAVA_HOME=/usr/java/jdk1.8.0_201 #(根据你的实际安装路径)
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
然后输入命令 source /etc/profile 使配置生效。
最后用命令 java -version 检查Java环境是否配置成功,结果如下:
4. Android SDK&NDK (android-sdk-r24.4.1 & android-ndk-r19c)
4.1 下载后解压到自己指定的路径下,我的如下
/usr/Android/android-sdk-linux
/usr/Android/android-ndk-r19c
4.2 用 sudo gedit /etc/profile打开文件,配置环境变量
NDK_HOME=/usr/Android/android-ndk-r19c
export NDK_HOME
export PATH=$PATH:$NDK_HOME
ANDROID_SDK_ROOT=/usr/Android/android-sdk-linux
export ANDROID_SDK_ROOT
export ANDROID_HOME=/usr/Android/android-sdk-linux
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
4.3 如果你用的是64位虚拟机,需要执行下面的命令配置依赖项,才能运行adb等32位可执行文件:
sudo apt-get install libstdc++6:i386 zlib1g:i386 libncurses5:i386
4.4 要运行模拟器,还需要如下命令配置依赖项:
sudo apt-get install libsdl1
4.5 如果想升级Android SDK,进入SDK目录下的Tools目录,用android工具更新SDK,命令如下:
./android update sdk
5. Android Studio
这个版本没有限制,下载直接解压安装,一路默认就可以了。其实不装这个也可以,但是在安装它的时候可以勾选一个Android Virtual Device选项,会为我们自动下载一个安卓的虚拟设备,CPU架构好像是x86,所以我就下载了,省得之后再去创建虚拟机。
它还可以管理更新SDK,在安装Android Studio的时候,如果你之前已经安装了SDK,那么它会检测到你SDK的路径并帮助你更新,如果没有安装SDK,它会帮你下载。
6. 安装Qt并配置 (qt-opensource-linux-x64-5.12.2.run)
6.1 下载并安装,安装时勾上与Android相关的选项。
6.2 为Qt设置Java和Android环境
6.2.1 默认情况下,当我们配置好上面的Java和Android环境后,打开Qt Creator,它会自动检测并配置好这些环境。如果没
有,看下一步。
6.2.2 在Qt Creator的工具->选项->设备->Android下:
6.3 设置Android相关的构建套件
6.3.1 默认情况下,Qt会自动检测到Qt版本,编译器以及调试器,然后配置好套件。
6.3.2 如果没有,在下图位置配置,设置构建套件是Qt的基础,不多说啦
7. 碰到的问题
把上面的工作都完成后,就可以在Ubuntu环境下进行Qt for Android的开发了,下面记录了两个我在开发完程序后运行时碰到的问题。
7.1 emulator Error
这里说的问题是,emulator(模拟器)找不到Nexus_5X_API_28_x86.ini文件和$HOME/.android/avd文件夹,这两个
在/root/.android下面都有,直接拷贝过来即可:
sudo cp /root/.android/avd/*.ini /home/zhounixing/.android/avd/
sudo cp –r /root/.android/avd/*.avd /home/zhounixing/.android/avd
7.2 KVM Error
KVM requires a CPU that supports vmx or svm
这里是说没有安装KVM或者KVM不可用,分两种情况:
7.2.1 如果你的Ubuntu是在真机环境下,用kvm-ok来检查KVM
如果如上图所示,说明KVM确实有问题,需要手动install一下
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
7.2.2 如果是在虚拟机的环境下,勾选虚拟化引擎相关的选项,步骤如下:
--将虚拟机关机
--右键你的虚拟机
--在设置->硬件->处理器->虚拟化引擎中,勾选上"虚拟化Intel VT-x/EPT或AMD-V/RVI(V)"选项
7.2.3 以上两种情况分别解决后,再用命令kvm-ok来检查KVM,若如下图所示,则证明成功解决
8. 小结
至此我们就可以在Ubuntu环境下进行Qt for Android的开发,并且成功运行或者调试了, 除了安卓虚拟设备,我们还可以连接手机来调试运行,需要打开手机的开发者模式,然后将USB选项从"仅充电"改成"传输文件"。
~~环境的搭建到这里就全部说完了,可能一步步照着上面的步骤来,你依然会碰到我没有碰到过的问题,因为这里的坑确实挺多的,但是网上大多都能找到解决办法,都不是什么太难的问题。