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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 本书将详细讲解闲鱼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



相关文章
|
24天前
|
存储 调度 数据安全/隐私保护
鸿蒙Flutter实战:13-鸿蒙应用打包上架流程
鸿蒙应用打包上架流程包括创建应用、打包签名和上传应用。首先,在AppGallery Connect中创建项目、APP ID和元服务。接着,使用Deveco进行手动签名,生成.p12和.csr文件,并在AppGallery Connect中上传CSR文件获取证书。最后,配置签名并打包生成.app文件,上传至应用市场。常见问题包括检查签名配置文件是否正确。参考资料:[应用/服务签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-V5)。
54 3
鸿蒙Flutter实战:13-鸿蒙应用打包上架流程
|
24天前
|
开发工具 芯片 开发者
鸿蒙Flutter实战:12-使用模拟器开发调试
本文介绍了如何在 M 系列芯片的 Mac 电脑上使用模拟器进行鸿蒙 Flutter 开发和调试。主要内容包括:创建 Flutter 项目、签名、创建模拟器、运行 Flutter 项目以及常见问题的解决方法。适用于希望在鸿蒙系统上开发 Flutter 应用的开发者。
41 2
鸿蒙Flutter实战:12-使用模拟器开发调试
|
28天前
|
自然语言处理 编译器 Linux
|
17天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
60 3
|
17天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
50 2
|
20天前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
64 3
|
26天前
|
机器学习/深度学习 人工智能 自然语言处理
思通数科AI平台在尽职调查中的技术解析与应用
思通数科AI多模态能力平台结合OCR、NLP和深度学习技术,为IPO尽职调查、融资等重要交易环节提供智能化解决方案。平台自动识别、提取并分类海量文档,实现高效数据核验与合规性检查,显著提升审查速度和精准度,同时保障敏感信息管理和数据安全。
86 11
|
22天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
22天前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
26天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。

推荐镜像

更多