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

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



相关文章
|
12天前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
49 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
17天前
|
负载均衡 5G 网络性能优化
深入解析LTE(长期演进技术)的基本架构及其关键组件
深入解析LTE(长期演进技术)的基本架构及其关键组件
84 2
|
15天前
|
Linux iOS开发 Docker
Docker:容器化技术的领航者 —— 从基础到实践的全面解析
在云计算与微服务架构日益盛行的今天,Docker作为容器化技术的佼佼者,正引领着一场软件开发与部署的革命。它不仅极大地提升了应用部署的灵活性与效率,还为持续集成/持续部署(CI/CD)提供了强有力的支撑。
195 69
|
26天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
|
19天前
|
机器学习/深度学习 算法
概率分布深度解析:PMF、PDF和CDF的技术指南
本文将深入探讨概率分布,详细阐述概率质量函数(PMF)、概率密度函数(PDF)和累积分布函数(CDF)这些核心概念,并通过实际示例进行说明。
55 15
概率分布深度解析:PMF、PDF和CDF的技术指南
|
6天前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
8天前
|
存储 缓存 Java
在Spring Boot中使用缓存的技术解析
通过利用Spring Boot中的缓存支持,开发者可以轻松地实现高效和可扩展的缓存策略,进而提升应用的性能和用户体验。Spring Boot的声明式缓存抽象和对多种缓存技术的支持,使得集成和使用缓存变得前所未有的简单。无论是在开发新应用还是优化现有应用,合理地使用缓存都是提高性能的有效手段。
15 1
|
13天前
|
缓存 负载均衡 Dubbo
Dubbo技术深度解析及其在Java中的实战应用
Dubbo是一款由阿里巴巴开源的高性能、轻量级的Java分布式服务框架,它致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
39 6
|
11天前
|
传感器 机器学习/深度学习 自动驾驶
未来出行的革新:无人驾驶技术深度解析
在当今科技飞速发展的时代,无人驾驶技术正逐步从科幻走向现实,成为未来交通领域最具革命性的变化之一。本文旨在深入探讨无人驾驶技术的工作原理、关键技术组件以及面临的伦理与法律挑战,并展望其对社会经济和日常生活的深远影响。通过分析感知、决策和执行三个核心环节,本文揭示了无人驾驶汽车如何利用先进的传感器阵列、复杂的算法和精密的机械控制来实现自主行驶。同时,文章也讨论了数据安全、隐私保护及责任归属等问题,呼吁建立相应的法规框架以促进技术的健康发展。最后,无人驾驶技术被预测将为减少交通事故、缓解拥堵、提高能效及推动共享经济等方面带来显著益处,预示着一个更加智能、高效和可持续的出行未来。
|
19天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
92 6

推荐镜像

更多
下一篇
无影云桌面