Qt for android填坑历程(版本5.15.2)

一、为什么会入坑?

最近在学习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美女裸奔啊,可惜我魅力还不够啊,只能看着她妖娆的背影绝尘而去。

三、总结

没有,还在折腾它。

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值