Flutter技术解析与实战——闲鱼技术演进与创新-第1章(2)

简介: 本书将详细讲解闲鱼Flutter&FaaS云端一体化架构,以及闲鱼基于Flutter的架构演进与创新,学习一套全面的Flutter架构应用方案。本书介绍闲鱼技术团队利用Flutter技术改造和上线复杂业务的混合工程改造实践,抽取Flutter依赖到远程的实现细节,以及使用Plugin桥接获取设备信息、使用基础网络库等混合开发实践指南。这些实践遍布闲鱼各大业务线和应用场景,为读者使用Flutter打造自己的研发体系探索一条实践之路。除了介绍闲鱼Flutter应用框架Fish Redux、开发利器AspectD、FlutterBoost等一众开源工具与开发实践指南,你还将在......

1.1.5 Native 启动下的Flutter 调试

      在Flutter 模式下,Flutter 插件调用Xcodebuild(Gradle)命令构建iOS(Android)工程。对于具备Native 背景的开发者来说,这不仅有些不适应,而且常因为Xcodebuild 等命令的参数问题,导致重复编译,当Native 工程规模庞大时尤为复杂。如何解决这个问题呢?这就涉及Flutter 启动和Native 启动下的Flutter 调试与热重载,如图1-5 所示。

5.jpg

图1-5

1.Flutter 启动下的Flutter 调试与热重载逻辑

      实际上,当Native 工程配置好Flutter 支持后,在Flutter 启动下做的工作主要有:

      ①检查是否需要重新生成flutter_tools.snapshot。

      ②基于pubspec.yaml 获取依赖(pub packages get),并生成插件描述文件.flutter-plugins 和pubspec.lock。

      ③基于Flutter 配置(如Framework 路径、Debug/Release 模式、是否开启Dart 2 等),生成Generated.xcconfig(iOS)和local.properties(Android)。

      ④基于Gradle 和Xcodebuild 构建应用。

      ⑤基于ADB 和LLDB 启动应用。

      ⑥等待应用中的Flutter 启动,寻找Observatory 端口,通过Dart Debugger 连接以便调试。

      ⑦寻找到端口后同步Hot Reload 依赖的文件,同时透过Daemon 监听命令(如用户点击插件按钮)实现Full Restart 或Hot Reload。

      换个角度来看,如果能够解决Native 启动下的Dart 调试和Hot Reload,由fluttertools 造成的编译慢等将不再是问题,且可解决调试环境不稳定的问题。当从Xcode 启动包含了Debug 模式Flutter 内容的iOS(Android Studio启动Android 类似,这里不再重复)应用时,我们需要关注步骤①②③⑥⑦。而步骤①②③除非flutter_tools、pubspec.yaml 或Flutter 配置发生变化,否则都不需要重新执行。步骤⑥⑦则是研发人员依赖的调试与热重载,必须考虑此模式下如何支持。

2.Native 启动下的Flutter 的调试与热重载逻辑

      寻找iOS 设备上的Observatory 端口。通过idevicesyslog 获取命令行,此处涉及libimobiledevice 库,其包含了idevicesyslog、iproxy 等命令。

kylewong@KyleWongdeMacBook-Pro ios % idevicesyslog | grep listening

Aug 26 14:07:18 KyleWongs-iPhone Runner(Flutter)[686] <Notice>:

flutter: Observatory listening on

http://127.0.0.1:56486/oB7rB0DQ3vU=/

      可以看到iOS 设备上的Observatory 启动了一个x 的端口(端口号随机),认证码为y。

      透过iproxy 将iOS 设备上的端口x 映射到本机端口z。

kylewong@KyleWongdeMacBook-Pro ios % iproxy 8101 56486

your-ios-device-uuid

      可以看到waiting for connection,此时就可以访问http://127.0.0.1:z/y/#/vm,打开Observatory,如图1-6 所示。

6.jpg

图1-6

      可以使用Observatory 检查诸多与Dart 相关的内存和调试等,这里不再展开。

      也可以通过IDE 链接去调试,配置Dart Remote Debug,如图1-7 所示。

7.jpg

图1-7

      这里需要注意的是,端口要使用刚转发到计算机的端口z,搜索源码路径为Flutter 工程的根目录。

      为了避免出现因为认证码造成的无法连接的问题,启动时需要传入'--disable-service-auth-codes'标志。

      配置好之后单击“调试”按钮,连接到调试端口,如图1-8 所示。

8.jpg

图1-8

      成功后可以看到Debugger 显示Connected。如果没有显示,则再单击一次“调试”按钮,如图1-9 所示。

9.jpg

图1-9

      之后便可以正常地使用IDE 设置断点和调试Dart(Flutter)代码了,如图1-10 所示。

10.jpg

图1-10



目录
打赏
0
0
0
0
28
分享
相关文章
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
397 85
Flutter敏感词过滤实战:基于AC自动机的高效解决方案
在社交、直播等场景中,敏感词过滤至关重要。本文介绍基于AC自动机的Flutter高效敏感词过滤方案,通过构建Trie树与失败指针实现线性时间复杂度的多模式匹配,支持干扰字符处理与动态优化。代码实战结合性能对比,助你打造毫秒级响应的过滤系统,适用于聊天、评论、内容审核等场景,保障平台安全。
252 69
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
190 27
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
234 31
RTSP协议规范与SmartMediaKit播放器技术解析
RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
155 5
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
151 4
AI技术如何重塑客服系统?解析合力亿捷AI智能客服系统实践案例
本文探讨了人工智能技术在客服系统中的应用,涵盖技术架构、关键技术和优化策略。通过感知层、认知层、决策层和执行层的协同工作,结合自然语言处理、知识库构建和多模态交互技术,合力亿捷客服系统实现了智能化服务。文章还提出了用户体验优化、服务质量提升和系统性能改进的方法,并展望了未来发展方向,强调其在客户服务领域的核心价值与潜力。
225 6
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
218 3
基于 Megatron 的多模态大模型训练加速技术解析
Pai-Megatron-Patch 是一款由阿里云人工智能平台PAI 研发的围绕英伟达 Megatron 的大模型训练配套工具,旨在帮助开发者快速上手大模型,打通大模型相关的高效分布式训练、有监督指令微调、下游任务评估等大模型开发链路。本文以 Qwen2-VL 为例,从易用性和训练性能优化两个方面介绍基于 Megatron 构建的 Pai-Megatron-Patch 多模态大模型训练的关键技术
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
147 1

推荐镜像

更多
  • DNS
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等