Flutter - 命令行工具源码调试环境搭建

news2024/11/25 4:52:54

文章目录

  • 前言
  • 开发环境
  • 环境搭建
  • 运行测试
  • 调试测试
  • 最后


前言

开发Flutter项目时难免会遇到各种问题,源码调试对于问题的解决不可或缺。

对于Flutter框架项目的源码调试,如果是Flutter核心库调试,只需要创建一个Flutter项目并在项目中使用需要调试的库就能找到源码打断点调试,甚至你可以直接修改源码,重新运行后改动即可生效;如果是Flutter命令行工具调试,没有核心库调试那么简单,需要调试的情况也少,不过还是在这里完整记录一下,希望能对你有所帮助。

开发环境

  • Flutter: 3.10.2
  • Dart: 3.0.2

环境搭建

首先使用Git工具拉取最新的Flutter框架项目代码:

git clone https://github.com/flutter/flutter.git

如果你不想拉取也行,电脑已有的Flutter SDK其实就是Flutter框架项目,是可以直接用的,不过建议拉取新的项目代码,避免破坏稳定的开发环境。

拉取成功后,如果想和本地Flutter SDK的版本保持一致,在项目根目录路径下执行命令切换:

git checkout [版本名称]

注意,后续所有命令皆在项目根目录路径下执行。

接着使用Android Studio打开项目,这时还不急着配置Flutter SDK路径,不然会提示The Flutter SD installation is incomplete

screenshot1

先执行命令:

bin/flutter

Flutter会自动下载Dart SDK并构建命令行工具。执行完成后,Flutter SDK路径配置为当前项目路径:

screenshot2

Dart SDK路径配置为当前项目下的bin/cache/dart-sdk路径,同时要开启Enable Dart support for the project 'flutter'

screenshot3

配置完毕,你会发现项目一堆报错,这时flutter update-packages命令就派上用场了,执行命令获取所需要的全部依赖项:

bin/flutter update-packages

执行成功后,项目不再报错。到此,调试环境基本搭建完成!

运行测试

Flutter命令行工具的执行入口位于packages/flutter_tools/bin/flutter_tools.dart文件,平时开发执行的flutter doctorflutter build等等命令都会执行到这边。

现在我们可以通过dart命令尝试运行flutter_tools.dart执行Flutter命令:

bin/dart packages/flutter_tools/bin/flutter_tools.dart doctor

可能有人会有疑问,前面bin/flutter不也可以执行Flutter命令,为什么还要执行flutter_tools.dart呢?

这是因为bin/flutter最终是执行到了bin/cache/flutter_tools.snapshot快照文件,更详细的一些分析,可以参考这篇文章Flutter问题记录 - Unable to find bundled Java version。如果你想要你的源码改动生效,就必须重新构建新的快照文件(可以通过手动删除flutter_tools.snapshot文件强制重新构建),同时也不好调试。

如果你遇到类似这样的报错:

Error: The specified language version is too high. The highest supported language version is xxx.

这是Dart SDK版本太低导致的,请使用bin/dart命令,最终使用的是bin/cache/dart-sdk目录下的Dart SDK。

除了以上方法,还可以借助Android Studio运行。当然,直接像这样运行是没办法执行指定Flutter命令的:

screenshot4

需要配置具体的命令参数:

screenshot5

例如flutter doctor命令这样配置:

screenshot6

配置后再次运行就好啦,其实本质还是运行前面方法中的命令。

调试测试

通过Android Studio调试很简单,配置好需要调试的命令参数后像平时一样打断点调试即可:

screenshot7

当然,也可以通过bin/dart命令调试:

bin/dart --pause-isolates-on-start --observe packages/flutter_tools/bin/flutter_tools.dart doctor

执行输出:

The Dart VM service is listening on http://127.0.0.1:8181/etUQnsnEyTE=/
The Dart DevTools debugger and profiler is available at: http://127.0.0.1:8181/etUQnsnEyTE=/devtools?uri=ws://127.0.0.1:8181/etUQnsnEyTE=/ws
vm-service: isolate(2029164948512007) 'main' has no debugger attached and is paused at start.  Connect to the Dart VM service at http://127.0.0.1:8181/etUQnsnEyTE=/ to debug.

用浏览器打开链接调试:

screenshot8

如果要终止调试命令,可以使用快捷键Control + C

参考文档:

  • Dart DevTools

最后

如果这篇文章对你有所帮助,请不要吝啬你的点赞👍加星🌟,谢谢~

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

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

相关文章

中级前端笔试面试题总结

typeof null 的结果是什么,为什么? typeof null 的结果是Object。 在 JavaScript 第一个版本中,所有值都存储在 32 位的单元中,每个单元包含一个小的 类型标签(1-3 bits) 以及当前要存储值的真实数据。类型标签存储在每个单元的…

AI大模型落地不远了!首个全量化Vision Transformer的方法FQ-ViT(附源代码)

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2111.13824.pdf 项目代码:https://github.com/megvii-research/FQ-ViT 计…

自研算法提升文本图像篡改检测精度,抖音技术团队获 ICDAR2023 分类赛道冠军...

动手点关注 干货不迷路 近日,抖音 CV 技术团队在 ICDAR 2023 的“Detecting Tampered Text in Images”比赛中,利用自研的“CAS”算法从 1267 个参赛队伍中脱颖而出,获得分类赛道的第一名。 ICDAR(International Conference on Do…

开源反分裂与数字大同世界

这是一篇报告的读后感,这篇报告是由Linux基金会研究部门发布的,名为《助力全球协作——开源代码的领导者如何面对分裂的挑战》。 这份报告的主要内容包括: - 开源代码开发中的分裂及其利弊- 开源的国际化,以及项目领导者如何克服参…

[Halcon3D] 3D鞋点胶的点云边界提取

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

Springboot整合Camunda工作流引擎实现审批流程实例

环境&#xff1a;Spingboot2.6.14 camunda-spring-boot-starter7.18.0 环境配置 依赖配置 <camunda.version>7.18.0</camunda.version> <dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boo…

OpenCV 项目开发实战--用 (C++ / Python)实现伪着色

文末附相关测试代码下载链接 在本教程中,我们将首先展示一种使用 OpenCV 的预定义颜色图对灰度图像进行伪彩色/伪彩色 的简单方法。如果您更愿意使用自己的颜色图,我们还将展示一种定义自定义颜色图的方法。 行星和太空中其他物体的灰度图像通常是伪彩色的,以显示细…

基于在线光度校准的混合稀疏单目视觉里程计

文章&#xff1a;Hybrid sparse monocular visual odometry with online photometric calibration 作者&#xff1a;Dongting Luo, Yan Zhuang and Sen Wang 编辑&#xff1a;点云PCL 代码&#xff1a;https://github.com/luodongting/HSO.git 欢迎各位加入知识星球&#xff0c…

小破站上线了!

作者 | 磊哥 来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09; 转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09; 为了给大家更好的阅读体验&#xff0c;磊哥搞了一个专业的技术网站&#xff0c;整理并总结了 Java 中比较经典的文章&…

管理类联考——英语——知识篇——作文题材说明

小作文题材 一、题材&#xff1a;小作文的内容&#xff08;写什么&#xff09; 1.疫情相关的主题&#xff1a;&#xff08;以信件方式出题可能性60%&#xff0c;对生活影响大&#xff09; (1)停学、复学&#xff1a;线上或线下停学和复学( go back to class/ school )&#x…

绕过激活锁 ,拯救一台旧手机iphone

一台旧的iphone忘了apple id账号和密码了&#xff0c;导致锁住了 某宝上解锁要花50&#xff0c; 不是舍不得花钱&#xff0c;作为一个搞技术的&#xff0c;实在觉得花钱有点丢人 经过一番探索 最终确定了有用的流程 并贴出来 亲测可用 最终实现了趟再床上就可以打卡 1、 刷机 …

拯救者2022款 y9000k 安装ubuntu20.04 休眠后无法唤醒(成功解决)

拯救者2022款 y9000k 安装ubuntu20.04 休眠后无法唤醒 一.建议在安装新的 NVIDIA 显卡驱动之前卸载原有的驱动程序。这样可以确保新驱动程序的安装过程更加干净和稳定。以下是卸载原有驱动的步骤&#xff1a;1.进入命令行界面&#xff1a; 按下 Ctrl Alt F3 进入文本模式的命…

IDEA Build Artifacts 功能使用总结

文章目录 创建Artifact步骤Build Artifact步骤 打开IDEA&#xff0c;在没有创建Artifact时&#xff0c;菜单"Build -> Build Artifacts…“是灰色的&#xff0c;不可用状态。 所以&#xff0c;第一步是进入"File -> Project Structure…”&#xff0c;创建Arti…

10. python从入门到精通——模块

目录 模块的概述 自定义模块 Python中的包 以主程序的形式执行 引用其他模块 模块的概述 什么是模块&#xff1a;在python中模块就是python程序&#xff0c;一个模块就是一个*.py的文件&#xff0c;通常情况下把能够实现某一特定功能的代码放置在一个文件中作为一个模块&…

基于Java实验室耗材管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

如何理解gic控制器中的originating PE Banked和target PE Banked

【问题】 如何理解originating PE Banked和target PE Banked&#xff0c;下面gicv2/gicv3的banked如何理解&#xff1f; 【回答】 GICv2 中&#xff0c;SGI 对于 originating PE&#xff08;即生成中断的处理器&#xff09;和 target PE&#xff08;即接收中断的处理器&#…

【JVM】命令行工具的基本使用--JVM常用指令

文章目录 背景一、Java 性能诊断工具简介二、简单命令行工具2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap2.6、jhat 三、图形化综合诊断工具3.1、JVisualvm3.2、JProfiler3.3、JConsole 背景 性能诊断是软件工程师在日常工作中需要经常面对和解决的问题&#xff0c;在用…

few-shot / one shot / zero shot object counting论文汇总

文章目录 2021OBJECT COUNTING: YOU ONLY NEED TO LOOK AT ONE 2022Scale-Prior Deformable Convolution for Exemplar-Guided Class-Agnostic CountingCounTR: Transformer-based Generalised Visual CountingFew-shot Object Counting with Similarity-Aware Feature Enhance…

python+vue企业高校文档管理系统的设计与实现

开发语言&#xff1a;Python 框架&#xff1a;django/flask Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm 在这个推荐个性化的时代&#xff0c;采用新技术开发一个文档系统来分享和展示内容是一个…

编程语言/文件系统/网络协议存在的那些编码

前面的文章介绍了URL编码&#xff0c;UTF8编码&#xff0c;base64&#xff0c;gzip等多种编解码的方式&#xff0c;这里&#xff0c;本节对字符和编码一些杂项进行梳理&#xff0c;相信你会感兴趣。 Python 中的字符和编码 为什么要强调字符编号和字符编码分离这样⼀个概念呢…