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的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...
随机推荐
- android webview 加载本地html 实现 与 java 之间的相互响应
1.布局 <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:androi ...
- Linux下的目录操作
. 此层目录 .. 上层目录 - 前一个工作目录 ~ 当前用户的工作目录 ~account 表示account的家目录 1.cd:改变目录,change Directory的缩写. 2.pwd:显示当 ...
- Root(hdu5777+扩展欧几里得+原根)
Root Time Limit: 30000/1500 ...
- 软件测试人员需要精通的开发语言(2)--- SQL
简单的入门语言vbs,通过实例的练习以及简单的应用,基本可以掌握vbs脚本的使用.如果说vbs只是为了实际测试中开发脚本,便捷测试的目的.那SQL语言就是测试人员的必备技能了,任何系统都会用到数据库, ...
- Web框架的引入
为什么会有web框架 有了上一篇内容,静态.动态web服务器的实现,已经掌握了客户端请求到服务器处理的机制.在动态资源处理中,根据请求 .py 导入模块应用,然后调用应用入口程序实现动态处理.但是在真 ...
- SpringBoot中的配置文件
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
- nginx学习之进程控制篇(三)
1. 进程 nginx有一个master进程和一个或多个工作进程. master process worker process or master process worker process wor ...
- ORM性能相关
model: 先给一个简单的表结构 from django.db import models class User(models.Model): username=models.CharField(m ...
- [闲来无事,从头再来][C51篇]导读
目 的: 通过学习C51,熟悉单片机,熟悉C语言,熟悉单片机系统的外部电路. 方 法: 通过看书和使用板子做实验来进行学习 参考资料: <新概念51单片机C语言教程& ...
- ABAP table control例子
[转自]http://blog.csdn.net/lhx20/article/details/3039909Table control用于在screen上以表格的形式显示数据,在table contr ...