Qt Create 4.6.2无法自动生成Android Kit

原文地址::https://www.cnblogs.com/foundkey/p/10335513.html

开发环境:

  • OS,Microsoft Windows [Version 10.0.17134.523]
  • Qt,5.11.1
  • Qt Creator,4.6.2
  • JDK,1.8.0_181
  • Android SDK,26.1.1
  • NDK,18.1

   

起因

心血来潮,突然想产生用Qt编写Android程序,根据网上的教程,在Tools-Options-Devices-Android配置好JDK、Android SDK、NDK后:

   

均提示配置成功,但无法像教程一样,自动生成Android Kit,新建工程时,无法选择Android:

   

网上查找到的教程都是使用Qt Creator 3作为例子,于是猜测是Qt Creator版本的问题。

之后Google上找到一篇文章,有人在Qt Creator 4.6.2上安装成功了:

https://developernote.com/2018/05/setting-up-qt-creator-4-6-1-for-android-development-on-windows-10/

   

于是下载Qt Creator 4.6.2源码,分析下原因。

   

分析

初步分析后,定位到在保存设置的时候,会自动创建Android Kit:

   

进入AndroidConfigurations::updateAutomaticKitList()查看,找到关键代码:

自动生成的Android Kit使用的是自动检测的编译工具链,如果自动检测的编译工具链中找不到API匹配的编译工具链,则不会创建对应ABI的Android Kit。

那么可推测,成功的人应该能在NDK中自动检测到编译工具链,那么为什么我这里检测不到?回到刚刚保存配置的函数,发现有注册新编译工具链的函数,猜测该函数用于自动检测NDK中的编译工具链:

进入AndroidConfigurations::registerNewToolChains()查看,发现的是这样:

继续分析AndroidToolChainFactory::autodetectToolChainsForNdk(),发现只会捕获GCC编译器。

   

查看NDK的更新公告

https://developer.android.google.cn/ndk/downloads/revision_history

发现在r18b版本后,移除了GCC编译器,使用Clang编译器代替:

   

查看自己的NDK版本,为18.1,那么应该是这个问题了。并且网上的教程都是在2018年前发布的,版本低于r18,所有能够配置成功。不知道新版本的Qt Creator是否修复了这个bug。

   

总结

在NDK版本高于r18b时,移除了GCC编译器工具,使用了Clang编译器代替。Qt Creator 4.6.2版本只会检测GCC编译器,当找不到编译器后 ,Android Kit就不会自动创建。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值