一、为什么会入坑?
最近在学习Qt,移动端的应用很有诱惑力不是?那咱们也走起!环境搭建是第一步,按照网上N多的教程,一步一步做过来,然并卵啊。
二、都有什么坑?
一部分问题按照网上教程能解决,这里就不多做提及。
现在Qt安装除非选择老版本,一般都是在线安装。下载完在线安装工具后,为了不浪费自己的生命,最好是在运行安装程序时,多费点心思,启动cmd,用参数选择国内镜像安装,如下:
.\qt-unified-windows-x64-4.4.1-online --mirror https://mirrors.ustc.edu.cn/qtproject
安装时组件选择比较坑,Qt Creator不能选择老版本,只能选最新的12.0版本。
一路next下去,安装完成后顺利启动Qt,是不是很Good的感觉?
在菜单栏选择"编辑"->"Preferences",弹出"首选项"对话框,在左侧列表中选中"设备",在右侧点击属性页"Android",在"安卓设置"中首先设置JDK路径,然后建立SDK目录,点"浏览"按钮选中目录,点"设置SDK"后开始安装SDK tools。安装完成后可以点击"SDK管理器"下载NDK及其它一些组件。
NDK下载完成后记得把NDK目录加入NDK列表,配置好后的情形是这样的:
其中的SDK版本很有迷惑性,这个版本号应该是SDK目录中cmdline-tools的版本,我使用的是8.0,更新的版本好像有问题,跟JDK8不兼容,下载组件会失败。
构建套件设置好以后,新建一个工程,配置好项目,点击构建,一般会卡在获取gradle文件的地方
https://services.gradle.org/distributions/gradle-x.x.x-bin.zip
把这个文件手动下载到本地,然后把路径指向本地文件。这一步趟过去后,继续往前走,前面是一个深不见底的沟壑。
Exception in thread “main” java.lang.NullPointerException at org.gradle.wrapper.PathAssembler.getDistName(PathAssembler.java:84) at org.gradle.wrapper.PathAssembler.getDistribution(PathAssembler.java:40) at org.gradle.wrapper.Install.createDist(Install.java:44) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
这个报错我找了网上很多解决办法,尝试后都失败了,包括手动下载gradle相应版本并在环境变量中设置安装路径。但奇怪的是我在cmd中运行gradle命令,提示没有找到命令。Why????
根据报错信息,应该是某个路径没有设置造成的 。我把手动安装的gradle卸载,然后路由到GRADLE_USER_HOME目录,其下的wrapper\dists\gradle-5.6.4-bin\bxirm19lnfz6nurbatndyydux中只有如下两项:
gradle-5.6.4-bin.zip.lck
gradle-5.6.4-bin.zip.ok
正常情况这个目录是这样的:
gradle-5.6.4
gradle-5.6.4-bin.zip
gradle-5.6.4-bin.zip.lck
gradle-5.6.4-bin.zip.ok
gradle-5.6.4-bin.zip.part
把gradle-5.6.4-bin.zip拷贝过来,然后把压缩包中的文件解压,把解压后的gradle-5.6.4 目录整个复制过来。
最后设置GRADLE_HOME指向这个gradle-5.6.4 目录,并在path环境变量中新建项%GRADLE_HOME%\bin,搞定后运行gradle命令正常,再在Qt中构建项目,可以继续了。
狗血的剧情来了,构建过程中报错,如果ABIs不选,可以生成APK,选择一个ABI后,自己编译出来的中间文件找不到了?具体情况时这样的:
构建目录下有个与工程名字对应的目录,在这个目录里有个android-build目录,里面有各个ABI对应的目录,如armeabi-v7a等等,里面有libxxxx_armeabi-v7a.so文件,但构建程序却要在如下路径里查找这样一个文件:
构建目录\xxx\android-build\arm-linux-android-elf-32bit\libxxxx_arm-linux-android-elf-32bit.so
你没有看错,这就是Qt Creater12.0干出来的事。
其根源在于Qt Creator12.0把NDK里对应的ABIs改成了如下这样:
armeabi-v7a ----> arm-linux-android-elf-32bit
arm64-v8a ----> arm-linux-android-elf-64bit
x86 ---> x86-linux-android-elf-32bit
x86_64 ---> x86_64-linux-android-elf-64bit
这个修改我不知道在哪改回来,反正构建程序的生成目录没有对应改过来,造成根据Qt Creator ABIs来查找目标文件的构建过程出现错误。
为了解决这个问题,度娘被搞烂了也没辙,狗子鼻子也不灵了,没办法安装老版Qt Creator吧。
嗯,好像8.0.2装上也不顶球用,还提示我环境变量没有设置?滚蛋吧你。
在网上找了个10.0.2版本装上,用维护工具把Android包重新安装一下,启动Qt Creator,打开项目设置,
"构建的步骤"里,点开"qmake"详情,里面熟悉的的四大项出来了。
构建过程终于走到最后了,好想看Qt Creator美女裸奔啊,可惜我魅力还不够啊,只能看着她妖娆的背影绝尘而去。文章来源:https://www.toymoban.com/news/detail-828792.html
三、总结
没有,还在折腾它。文章来源地址https://www.toymoban.com/news/detail-828792.html
到了这里,关于Qt for android填坑历程(版本5.15.2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!