Qt Create 4.6.2无法自动生成Android Kit
开发环境:
- 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就不会自动创建。
Qt Create 4.6.2无法自动生成Android Kit的更多相关文章
- Android开发——自动生成Android屏幕适配的dimens.xml文件
使用dimens.xml解决屏幕适配问题是Android官方解决方案,本文主要讲述了如何自动生成Android屏幕适配的dimens.xml,减少了工作量,在维护dimens.xml文件时更加省时省力 ...
- 不自动生成Android Dependencies的解决方式
今天遇到的奇怪问题是网上下载的demo导入第三方包运行后Android: NoClassDefFoundError的错误,原因是第三方的jar包并没有打包进apk里,运行是肯定要出错的. 网上百度了N ...
- Flutter - 自动生成Android & iOS图标
对于要发布的app来说,做图标是一个麻烦的事,你需要知道N个图标的分辨率,然后用PhotoShop一个个修改导出. PS好图标之后,按照各自的位置放进去. ********************** ...
- SpringBoot13 利用mybatis-plus自动生成entity、dao、service、controller
1 环境配置 = 2 新建一个新的springboot项目 2.1 选择一些必要的依赖 web jpa mysql <?xml version="1.0" encoding= ...
- C++解析头文件-Qt自动生成信号声明
目录 一.瞎白话 二.背景 三.思路分析 四.代码讲解 1.类图 2.内存结构声明 3.QtHeaderDescription 4.私有函数讲解 五.分析结果 六.下载 一.瞎白话 时间过的ZTMK, ...
- C++解析头文件-Qt自动生成信号定义
目录 一.概述 二.实现思路 三.代码讲解 1.类图 2.QtCppDescription 3.测试 四.源代码 一.概述 上一篇文章C++解析头文件-Qt自动生成信号声明我们主要讲解了怎么去解析C+ ...
- Qt自动生成.rc文件并配置对应属性 程序图标 版本 描述等
Qt项目配置文件pro里需要如下配置,进行qmake,build后会自动生成.rc文件,并将对应的信息写入文件中 VERSION = 1.0.0.1 RC_ICONS = "http.ico ...
- SQL Server镜像自动生成脚本
SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...
- 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法
首先需要说明的是这是.net framework的一个组件,而不是针对.net core的.目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...
随机推荐
- 25线程基础-CLR
由CLR via C#(第三版) ,摘抄记录... 1.线程是CPU的虚拟化,windows为每个进程提供专用线程(CPU)2.线程开销:内存和时间. 线程内核对象—OS为系统中创建的每个线程都分配并 ...
- local variable 'xxx' referenced before assignment(犯过同样的错)
这个问题很囧,在外面定义了一个变量 xxx ,然后在Python的一个函数里面引用这个变量,并改变它的值,结果报错local variable 'xxx' referenced before assi ...
- Windows下安装appium桌面版和命令行版
安装appium桌面版和命令行版 一 桌面版(打开很慢,常用于辅助元素定位) 1.官网下载window版本: github search appium desktop download late ...
- socket java 实例
简单的java socket 示例 一.搭建服务器端 a).创建ServerSocket对象绑定监听端口. b).通过accept()方法监听客户端的请求. c).建立连接后,通过输入输出流读取客户端 ...
- python 列表中字符串排序故事一则
a = ["bca","cab","abc"] 有时候需要对列表排序 如果是对列表中整个元素 直接用sort()排序 如果想按元素的某一段排 ...
- mysql 分页测试,
大环境:MySQL5.6 自己造了 27万数据, 一次性 查出来,会超时: 而分页跑,会查出来8s: 但是在少于27万时,直接查比 分页查快5倍:
- shell编程2 ---条件判断语句
shell编程2 一.条件判断语句 1.按照文件类型进行判断 eg:test -e /etc/passwd 或者 [ -e /etc/passwd ] &&echo yes || ...
- 95th percentile concentration
很多网络流量监控软件都提供了一个95th的值,开始一直不太理解,终于在solarwinds官网找到答案. 95th百分点指的是所给数集中超过其95%的数.它是一个统计学上的概念.对于某个接口,准确统计 ...
- STL 之 map的用法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
- Shiro 集成 Web
Web 集成 Shiro 的练习项目. Servlet + Shiro 项目结构 新建Maven项目,pom配置如下 <project xmlns="http://maven.apac ...