QTAndroid编译环境配置

news2025/2/23 19:27:49

开始 QT 官网的安装教程安装,经过测试有部分小错误。以下是结合教程和网上搜集的一些材料最后安装成功的步骤。

SDK和JDKhttp://链接: https://pan.baidu.com/s/13CImHLAoUFAdecF2BVsBlQ?pwd=627g 提取码: 627gicon-default.png?t=O83Ahttp://链接: https://pan.baidu.com/s/13CImHLAoUFAdecF2BVsBlQ?pwd=627g 提取码: 627g

安装准备

首先下载 JDK

JDK 下载icon-default.png?t=O83Ahttps://www.oracle.com/java/technologies/downloads/

这里不要下载 JDK20 和 JDK17,需要下载 JDK 8

这里不要下载 JDK20 和 JDK17,需要下载 JDK 8

将页面往下滑,到下图所示的位置,下载 Java8,点击 Windows,下载安装包。

Android SDK 下载icon-default.png?t=O83Ahttps://www.androiddevtools.cn/

这里不要下载 android studio,直接下载 SDK 即可,请注意 SDK 下载在页面的下方,使劲往下滑。

页面划到下图所示位置,下载相对应的 SDK。

还有 NDK,经过测试,NDK 可以在后续步骤中的 SDK 自动下载,不需要手动下载,而且手动下载容易搞错版本号。

到这里安装准备结束,下面进入安装环节。

安装过程

JDK 安装

JDK 下载完成后是安装包的形式,如下图

打开之后,点击下一步

点击更改可以修改安装位置,上面的功能选项不要修改,完成后点击下一步,

等待,过一会儿会出现JRE的安装界面,

看到下图界面后,可以更改安装目录,建议改到和JDK同一根目录下,点击下一步,

安装完成后,需要配置系统环境变量。

首先配置 JAVA_HOME 变量,按如下图操作,变量值为刚才安装 JDK 安装目录。

然后配置 CLASSPATH 变量,如下图,变量值为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。

配置完成后全点确认,保存。

Android SDK 安装

Android SDK 下载完成后是压缩包形式,如下图所示。

解压文件放在空目录下

进入此目录,打开SDK Manager.exe。

打开后需要等待一会儿会出界面,等下面进度条走完,将其他所有√全部取消,只留下这一个,点击右下角Install,等待一会儿后提示完成,关闭这个界面。

安装这两个,然后关闭界面。

进入如下目录,打开 cmd 命令行。

输入sdkmanager,查看是否与下图输出一致。

如果提示没有sdkmanager.bat,请将下面的代码拷贝入记事本,并改名为sdkmanager.bat。如果正常,请跳过这段。

@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  sdkmanager startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%..

@rem Add default JVM options here. You can also use JAVA_OPTS and SDKMANAGER_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*
goto execute

:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\lib\sdklib-25.3.0-dev.jar;%APP_HOME%\lib\layoutlib-api-25.3.0-dev.jar;%APP_HOME%\lib\dvlib-25.3.0-dev.jar;%APP_HOME%\lib\repository-25.3.0-dev.jar;%APP_HOME%\lib\gson-2.2.4.jar;%APP_HOME%\lib\commons-compress-1.8.1.jar;%APP_HOME%\lib\httpclient-4.1.1.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\common-25.3.0-dev.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\annotations-25.3.0-dev.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\httpcore-4.1.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-codec-1.4.jar;%APP_HOME%\lib\guava-18.0.jar

@rem Execute sdkmanager
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SDKMANAGER_OPTS%  -classpath "%CLASSPATH%" com.android.sdklib.tool.SdkManagerCli %CMD_LINE_ARGS%

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable SDKMANAGER_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%SDKMANAGER_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega

 完成以上操作后,就是与官网不同的部分了,官网给出的安装指令已经失效,新版安装指令如下所示。请按顺序依次输入以下指令。

sdkmanager "build-tools;30.0.2" --sdk_root=<ANDROID_SDK_ROOT>
sdkmanager "ndk;21.3.6528147" --sdk_root=<ANDROID_SDK_ROOT>
sdkmanager "platform-tools" --sdk_root=<ANDROID_SDK_ROOT>
sdkmanager "platforms;android-30" --sdk_root=<ANDROID_SDK_ROOT>
sdkmanager "cmdline-tools;latest" --sdk_root=<ANDROID_SDK_ROOT>
sdkmanager "extras;google;usb_driver" --sdk_root=<ANDROID_SDK_ROOT>

这里,将其中的<ANDROID_SDK_ROOT>需要改成实际安装路径,比如我使用的是以下命令。

sdkmanager "build-tools;30.0.2" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "ndk;21.3.6528147" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "platform-tools" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "platforms;android-30" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "cmdline-tools;latest" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"
sdkmanager "extras;google;usb_driver" --sdk_root="D:\Qt\androidenviroment\android-sdk-windows"

安装过程中会询问是否同意,输入 y 即可。

以上,完成后就可以配置 QT creator 了。

配置 QT Creator

打开QT Creator,点击菜单栏中的工具-选项,如下图所示。

在上述界面中,将JDK location选择为刚才的JDK安装路径,Android SDK的路径选择为刚才SDK的根目录,会自动检测,这里图中与上述配置过程不一致是为了展示安装成功效果,实际请以安装时实际选择路径为准。

正常到这里已经有两个√了,JDK和SDK的部分完全正常,下面OpenSSL binaries location请选择与在SDK根目录中的一个空文件夹,例如上图所示,然后点击右侧Download OpenSSL键,会自动下载OpenSSL,下载完成后出现第三个√。

至此,Win11 下QT5.15.2的安卓编译环境安装完成,可以在下图所示Kits选项卡中看到Android编译环境已正常识别。

2023 6/19 更新

安装完编译环境之后,如果没有设备需要在电脑上安装虚拟机,安装完虚拟机后需要配置,这里也有很多问题,在这里记录一下,避免以后踩坑

首先,如果没有安卓设备,我们需要在电脑上安装虚拟机,这里我们选择夜神模拟器

安装完成后,还需要进行一些设定,否则 qtcreator 无法正确链接到设备(老版本 qtcreator 是可以自动连接,但更新到 10.0.2 之后的版本,需要手动连接)

1、“夜神”的设置

夜神模拟器链接不了adb的缘由主要是adb的版本与夜神模拟器adb版本不一致形成的,具体的解决办法请看下面的操做步骤

方法/步骤 

1、 使用快捷键win + R打开运行窗口,输入cmd,这里主要是为了让 qt 的 adb 和夜神模拟器的 adb 版本一致

2、 启动了cmd命令窗口工

3、 输入nox_adb version 命令,查看模拟器的adb版本,如果发现模拟器的版本是1.0.36与android-sdk的adb版本不一致3d

 

4、 进入模拟器的安装目录下,修改nox_adb.exe的名字为nox_adb.exe.bak

把android-sdk的adb.exe文件复制到桌面一份,修改adb.exe的名称为nox_adb.exe,再把桌面修改完名称的nox_adb.exe复制到模拟器的Nox\bin目录下

2、连接到127.0.0.1

这一步非常关键

输入:cd  D:\Program Files\Nox\bin

nox_adb.exe  connect 127.0.0.1:62001

而后adb devices就有了。

1、cmd 中输入

nox_adb.exe connect 127.0.0.1:62001

2、 在cmd中输入 adb devices,能够发现模拟器设备了,已经链接上了,大功告成

以上全部配置完,打开 qtcreator 就可以连接上模拟器了,但是依旧还有问题

在编译第一个项目的时候,报出不支持套件的错误。

这是由于,android 设备 qt 套件 sdk 版本迭代都非常快。需要一致。

在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。

最后将套件设置为 armeabi-v7a,得以解决。

但是解决了以上问题依旧无法编译安装,因为需要设置 android sdk 版本。

需要在这里设置一下

但是设置完了依旧无法解决。

因为我们正常是没有签名密钥的,没有密钥签名只能打出debug的包,签名后才能发布release包。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2146425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)

两种情况&#xff08;场景&#xff09; 情况一 代码还只在本地&#xff0c;未push到运程仓库&#xff0c;想把代码还原到上一次commit的代码&#xff0c;此时操作为代码撤销 解决方案&#xff1a; git reset [--hard|soft|mixed|merge|keep] [commit|HEAD] 情况二 …

Axure设计之表格列冻结(动态面板+中继器)

在Web端产品设计中&#xff0c;复杂的表格展示是常见需求&#xff0c;尤其当表格包含大量列时&#xff0c;如何在有限的屏幕空间内优雅地展示所有信息成为了一个挑战。用户通常需要滚动查看隐藏列&#xff0c;但关键信息列&#xff08;如ID、操作按钮等&#xff09;在滚动时保持…

十三 系统架构设计(考点篇)

1 软件架构的概念 一个程序和计算系统软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件&#xff0c;构件 的外部可见属性以及它们之间的相互关系。 体系结构并非可运行软件。确切地说&#xff0c;它是一种表达&#xff0c;使软件工程师能够&#xff1a; (1)分…

VMware vSphere 8.0 Update 3b 发布下载,新增功能概览

VMware vSphere 8.0 Update 3b 发布下载&#xff0c;新增功能概览 vSphere 8.0U3 | ESXi 8.0U3 & vCenter Server 8.0U3 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vsphere-8-u3/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页…

汽车软件开发之敏捷开发

一、前言 目前汽车电子产品&#xff0c;特别是汽车几大域控&#xff08;如&#xff1a;智能座舱、智能驾驶、智能网联、车身控制&#xff09;市场竞争激烈&#xff0c;消费者对汽车的需求逐渐多元化和个性化&#xff0c;用户对座舱和智驾产品的要求也越来越高。他们不仅要求产…

人工智能时代,我们依旧有无限的选择权!

人工智能时代&#xff0c;即有人两眼放光&#xff0c;又有人忧心忡忡。前者看到大量的机遇、蓝海&#xff0c;后者看到了失业和糟糕的未来&#xff0c;亦或是有人有喜有忧。但是只要你知晓一个真谛&#xff1a;凡事皆有利有弊&#xff0c;那便不用内耗了。或是选择当前的生活节…

SAP B1 - 新账套设置密码不过期

背景 建立新账套后&#xff0c;每隔一段时间就会自动弹出以下要求更改密码的提示窗口&#xff0c;最讨厌的是系统会记住你的所有历史密码&#xff0c;新设置密码不能与所有曾用密码相同。找到终止该自动更换密码的设置&#xff0c;遂总结为经验帖。 操作 点击位于顶栏的小人图…

示例:WPF中Grid显示网格线的几种方式

一、目的&#xff1a;介绍一下WPF中Grid显示网格线的几种方式 二、几种方式 1、重写OnRender绘制网格线&#xff08;推荐&#xff09; 效果如下&#xff1a; 实现方式如下&#xff1a; public class LineGrid : Grid{private readonly Pen _pen;public LineGrid(){_pen new P…

C#实战|大乐透选号器[11]:确认选号功能的实现

哈喽,你好啊,我是雷工! 接着练习大乐透选号器的功能,这里练习实现确认选号功能; 以下为实现笔记; 01 效果演示 实现点击确认选号,将机选或手动选出的号码,添加到列表中显示; 02 设置DataGridView 首先设置控件GataGridView的属性; 2.1、编辑列 选中控件,点击右上角的…

最新Kali Linux超详细安装教程(附镜像包)

一、镜像下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1BfiyAMW6E1u9fhfyv8oH5Q 提取码&#xff1a;tft5 二、配置虚拟机 这里我们以最新的vm17.5为例。进行配置 1.创建新的虚拟机&#xff1a;选择自定义 2.下一步 3.选择稍后安装操作系统 4.选择Debian版本 因…

AI绘画实操 Stable Diffusion 到底怎么玩儿,新手必看的AI绘画入门安装使用教程

大家好&#xff0c;我是灵魂画师向阳 2024年&#xff0c;是AI绘画技术飞速发展的一年&#xff0c;各种AI绘画工具层出不穷&#xff0c;为了让大家在了解和学习AI绘画的过程中少走弯路&#xff0c;今天我将详细介绍目前世界上使用用户最多&#xff0c;社区最大&#xff0c;生态…

Springboot与minio

一、介绍 Minio是一个简单易用的云存储服务&#xff0c;它让你可以轻松地把文件上传到互联网上&#xff0c;这样无论你在哪里&#xff0c;只要有网络&#xff0c;就能访问或分享这些文件。如果你想要从这个仓库里取出一张图片或一段视频&#xff0c;让网站的访客能看到或者下载…

遭华尔街大幅看好,收入高速增长但面临困境,Zillow股票还能买入吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经的核心观点&#xff1a; &#xff08;1&#xff09;Wedbush已经将Zillow的评级上调为“跑赢大盘”&#xff0c;目标价为80美元。 &#xff08;2&#xff09;第二季度业绩强劲&#xff0c;收入继续保持着两位数增长…

esp32-C2 对接火山引擎实现语音转文本(二)

目录 一、 语音转文本初始化 二、 WedStream 事件处理函数 一、 语音转文本初始化 Volcengine_vtt_handle_t Volcengine_Vtt_Init(Volcengine_vtt_config_t *config) {// 管道配置audio_pipeline_cfg_t pipeline_cfg = DEFAULT_AUDIO_PIPELINE_CONFIG();Volcengine_vtt_t *vt…

架构师:在 Spring Cloud 中实现全局异常处理的技术指南

1、简述 在分布式系统中,微服务架构是最流行的设计模式之一。Spring Cloud 提供了各种工具和库来简化微服务的开发和管理。然而,随着服务的增多,处理每个服务中的异常变得尤为复杂。因此,实现统一的全局异常处理成为了关键。本篇博客将介绍如何在 Spring Cloud 微服务架构…

DevExpress中文教程:如何将WinForms数据网格连接到ASP. NET Core WebAPI服务?

日前DevExpress官方发布了DevExpress WinForms的后续版本——将.NET桌面客户端连接到安全后端Web API服务(EF Core with OData)&#xff0c;在本文中我们将进一步演示如何使用一个更简单的服务来设置DevExpress WinForms数据网格。 P.S&#xff1a;DevExpress WinForms拥有180…

关于github GPG的配置

GitHub 使用 OpenPGP 库来确认本地签名的提交和标记&#xff0c;是否根据你在 GitHub.com 上添加到帐户的公钥进行加密验证。 这里是github关于GPG密钥的文档&#xff1a;https://docs.github.com/zh/authentication/managing-commit-signature-verification/about-commit-sig…

开放式耳机和骨传导耳机哪个好用?全面解析哪个品牌的开放式蓝牙耳机质量好

当谈到开放式耳机与骨传导耳机之间的选择时&#xff0c;两种类型的耳机各有千秋&#xff0c;适合不同的使用场景和个人偏好。 开放式耳机的设计让耳朵可以自由呼吸&#xff0c;同时让部分环境音进入&#xff0c;这样用户可以在享受音乐的同时保持对外界的感知&#xff0c;非常…

求Huffman树及其matlab程序详解

#################本文为学习《图论算法及其MATLAB实现》的学习笔记################# 算法用途 求Haffman树 算法思想 根据定理4.17,给出求Huffman树的算法步骤如下: ①对给出的所要求的叶子顶点的权进行从小到大排序,写出的权重向量 ; ②根据定理4.17,写出兄弟的权重分别为…

9月19日微语报,星期四,农历八月十七

9月19日微语报&#xff0c;星期四&#xff0c;农历八月十七&#xff0c;工作愉快&#xff0c;生活喜乐&#xff01; 一份微语报&#xff0c;众览天下事&#xff01; 1、台风“普拉桑”将影响东海&#xff0c;自然资源部启动海洋灾害三级应急响应。 2、国家体育总局&#xff…