当前位置: 首页 > news >正文

【Qt 学习之路】Qt Android开发环境搭建:Ubuntu的Vmware虚拟机中的踩坑实录

文章目录

  • 1、简介
  • 2、虚拟机内USB设备识别难题
    • 2.1、正确连接手机
    • 2.2、打开USB相关配置
    • 2.3、打开虚拟机中的手机设备
  • 3、Gradle下载速度缓慢之困
    • 3.1、下载 Gradle 镜像
    • 3.2、安放镜像位置
    • 3.3、修改项目中的gradle路径

1、简介

许久未曾使用Qt进行Android开发,今日在Ubuntu系统的虚拟机(VM)中搭建开发环境时,着实遭遇了不少棘手问题。接下来,我将详细分享此次搭建过程中遇到的各类“坑”及其解决方案,希望能为有同样需求的开发者提供参考。

  • 虚拟机内USB设备识别难题
    在开发过程中,需要将Android手机与开发环境连接以进行调试。然而,我遇到了一个颇为棘手的问题:Ubuntu系统能够正常识别通过USB连接的手机设备,但在虚拟机内的Windows系统中,手机却“隐身”了,无法被识别。这一状况直接阻碍了后续的调试工作,让我一度陷入困境。

  • Gradle下载速度缓慢之困
    在搭建环境时,默认配置需要下载gradle-5.5.1-bin.zip文件。但下载过程极其缓慢,进度条也没有一个,只能通过任务管理器中的网络来查看下载速度,几乎停滞不前。这不仅严重影响了开发效率,还让我对能否顺利完成环境搭建产生了担忧。

针对上述这些问题,本文后续部分将逐一进行深入剖析,并给出切实可行的解决办法。无论是正在为类似问题苦恼的开发者,还是计划在虚拟机中搭建Qt Android开发环境的新手,都能从本文中找到有价值的参考信息。

2、虚拟机内USB设备识别难题

2.1、正确连接手机

开展Qt Android开发调试,先正确用USB连接手机和电脑,选好质量佳的数据线,保证Ubuntu能识别手机。连接好后,在Ubuntu终端输入 lsusb 命令,查看设备ID,确认Ubuntu已识别手机,再进行后续操作

以下是插入手机前后对比,可以看到多了一个华为的手机设备。
在这里插入图片描述

2.2、打开USB相关配置

在这里插入图片描述

2.3、打开虚拟机中的手机设备

最关键的是这一步!
在VMware中依次打开
VM → Removable Devices → 你的手机设备(例如:HuaWei XXX) → connect 连接

如果你的虚拟机中显示手机的相关信息就成功了
在这里插入图片描述

3、Gradle下载速度缓慢之困

3.1、下载 Gradle 镜像

当前可用阿里云相关镜像:
https://mirrors.aliyun.com/gradle/gradle-5.5.1-bin.zip

3.2、安放镜像位置

打开windows的gradle缓存目录,因系统而已这里:

%APPDATA%\QtProject\gradle

默认是没有gradle的,需要手动建一个,然后把gradle的zip包复制到该目录。

3.3、修改项目中的gradle路径

Qt Creator 默认从 .gradle/wrapper/dists/ 目录读取 Gradle。
打开你自己的项目中的文件夹,修改配置文件。如果项目中的 gradle-wrapper.properties 文件未修改 distributionUrl,Qt 会继续尝试从官方服务器下载。

例如我的是:

build-RockerAndButton-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_2_for_Android-Debug\android-build\gradle\wrapper

找到“gradle-wrapper.properties”,将 distributionUrl 指向本地文件路径,例如:

distributionUrl=file:///C:/Users/<用户名>/AppData/Roaming/QtProject/gradle/gradle-5.5.1-bin.zip

这样就可以应用本地的Gradle构建了

http://www.lryc.cn/news/585423.html

相关文章:

  • 数据结构:栈、队列、链表
  • AI技术重塑工业制造:从智能应用到大型模型落地
  • 从代码学习深度强化学习 - PPO PyTorch版
  • 在Spring Boot 开发中 Bean 的声明和依赖注入最佳的组合方式是什么?
  • uniapp小程序tabbar跳转拦截与弹窗控制
  • 【工具变量】全国省市区县土地出让结果公告数据(2000-2024年)
  • 飞算 JavaAI 体验:重塑 Java 开发的智能新范式
  • UE5多人MOBA+GAS 18、用对象池来设置小兵的队伍的生成,为小兵设置一个目标从己方出生点攻打对方出生点,优化小兵的血条UI
  • Go语言WebSocket编程:从零打造实时通信利器
  • Script Error产生的原因及解法
  • 鸿蒙app 开发中的 map 映射方式和用法
  • STM32F103之存储/启动流程
  • R² 决定系数详解:原理 + Python手写实现 + 数学公式 + 与 MSE/MAE 比较
  • MCU芯片内部的ECC安全机制
  • 上位机知识篇---Docker
  • 新型变种木马正在伪装成Termius入侵系统
  • OpenCV多种图像哈希算法的实现比较
  • 什么是IP关联?跨境卖家如何有效避免IP关联?
  • DOM编程实例(不重要,可忽略)
  • 从Excel到PDF一步到位的台签打印解决方案
  • 扫描文件 PDF / 图片 纠斜 | 图片去黑边 / 裁剪 / 压缩
  • cnpm exec v.s. npx
  • Java基础-String常用的方法
  • 用AI做带货视频评论分析【Datawhale AI 夏令营】
  • 进程管理中的队列调度与内存交换机制
  • MinIO配置项速查表【五】
  • 云原生周刊:镜像兼容性
  • 「Linux命令基础」Shell命令基础
  • 从零到一:深度解析汽车标定技术体系与实战策略
  • React 的常用钩子函数在Vue中是如何设计体现出来的。