目录
flutter - -version
一、介绍
//官方解释: Reports the version of this tool.
flutter --version
// 下面是输出的版本信息
Flutter 3.7.12 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 4d9e56e694 (1 year, 9 months ago) • 2023-04-17 21:47:46 -0400
Engine • revision 1a65d409c7
Tools • Dart 2.19.6 • DevTools 2.20.1
二、解释
1、Flutter 版本信息
Flutter 3.7.12 • channel stable • https://github.com/flutter/flutter.git
Flutter 3.7.12:
表示当前安装的 Flutter SDK 版本是 3.7.12。版本号由三部分组成:
3: 主版本号,表示主要功能迭代。
7: 次版本号,表示较大的功能改进或增强。
12: 补丁版本号,表示 bug 修复或小的优化。
channel stable:
当前使用的分支是 stable 分支。Flutter 有四个主要分支:
stable: 稳定版本,推荐用于生产环境。
beta: 功能相对稳定,包含一些新特性。
dev: 活跃开发中的新功能,但可能存在不稳定性。
master: 最新的功能代码,但稳定性最低。
https://github.com/flutter/flutter.git:
Flutter SDK 的 Git 仓库地址。
2、Framework 信息
Framework • revision 4d9e56e694 (1 year, 9 months ago) • 2023-04-17 21:47:46 -0400
revision 4d9e56e694:
当前框架代码的 Git 提交哈希值,唯一标识了使用的 Flutter Framework 源代码的版本。
(1 year, 9 months ago):
距离当前时间,框架代码的最后更新时间(提交时间)是 1年9个月前。
2023-04-17 21:47:46 -0400:
框架代码最后一次更新的具体时间和时区(-0400 表示 UTC-4 时区)。
3、Engine 信息
Engine • revision 1a65d409c7
Engine:
表示使用的 Flutter 引擎版本。
具体版本会由 Flutter SDK 中的 bin/internal/engine.version 文件决定。
revision 1a65d409c7:
当前 Flutter 引擎的 Git 提交哈希值,唯一标识使用的引擎版本。
引擎的作用: Flutter 引擎是 Flutter 框架的核心部分,负责:
Dart 代码的执行(通过 Dart 虚拟机)。
渲染 Flutter 的 UI 。
与平台(iOS/Android)的交互。
这个哈希值与 Flutter Framework 的哈希值绑定,确保框架和引擎版本兼容。
4、工具信息
Tools • Dart 2.19.6 • DevTools 2.20.1
Dart 2.19.6:
当前使用的 Dart SDK 版本是 2.19.6。Dart 是 Flutter 的核心语言。
DevTools 2.20.1:
当前使用的 Flutter DevTools 版本是 2.20.1。DevTools 是调试和分析 Flutter 应用的工具。
flutter build ios
一、介绍
//官方解释:Build an iOS application bundle (macOS host only).
// 构建 iOS 应用程序包(仅限 macOS 主机)。
flutter build ios
执行 flutter build ios 命令时,Flutter SDK 会执行一系列任务来构建 iOS 应用。这些任务包括代码编译、资源打包以及 Flutter 引擎的准备。
二、详细的过程
1、准备构建环境
Flutter CLI 会首先检查构建环境,包括:
是否安装了必要的工具(如 Xcode、CocoaPods)。
检查当前项目的 pubspec.yaml 文件是否完整。
确保所有依赖已下载并解析完成(执行类似 flutter pub get 的操作)。
2、确定构建模式
根据你运行的命令,Flutter CLI 会决定构建模式,例如 –release 或 –debug。
默认情况下,flutter build ios 会使用 Release 模式。
3、打包 Flutter 引擎
Flutter 引擎的设计
Flutter 引擎是一个独立的跨平台组件,用于支持 Dart 代码的执行和 Flutter 的渲染。
引擎的源代码在 Flutter 的主仓库之外,存储在专门的 Flutter Engine 仓库 中。
引擎源代码会由 Flutter 团队编译成不同平台的二进制文件(如 Flutter.framework),并托管在 Google 的云存储服务中。
当首次运行 flutter build ios 时,Flutter SDK 会检查引擎文件是否已经存在。如果文件缺失,SDK 会从远程服务器下载必要的资源。流程如下:
3.1 检查本地缓存目录
<flutter_sdk_path>/bin/cache/artifacts/engine/
这里存储了预编译好的引擎文件,例如
ios-release/Flutter.framework
ios-debug/Flutter.framework
3.2 下载引擎文件
如果引擎文件不存在或版本不匹配,Flutter CLI 会自动从 Google 的存储服务器下载适配当前 Flutter 版本的引擎文件。
下载的引擎文件会解压到本地缓存目录。
下载的文件包括:
不同模式(debug、profile、release)的引擎。
支持不同架构(如 arm64 和 x86_64)的引擎。
3.3 动态生成 Flutter.xcframework
Flutter CLI 使用下载好的二进制文件动态生成 Flutter.xcframework,供 Xcode 项目使用。
3.4为什么不直接包含引擎文件?
减少 SDK 的初始下载大小:如果直接包含所有平台和模式的引擎文件,SDK 会变得非常庞大。
灵活支持多个平台:Flutter 支持多个平台(iOS、Android、Web、Desktop)。按需下载特定平台的引擎文件,可以减少不必要的资源占用。
4、Dart 代码编译
Flutter CLI 使用 Dart 编译器将你的 Dart 代码编译成二进制格式:
Release 模式:Dart 代码会被 AOT(Ahead-Of-Time)编译成机器码。
编译后的文件会与 Flutter.xcframework 一起打包。
5、资源打包
Flutter CLI 会将你的 Flutter 应用的静态资源(如图片、字体等)通过 flutter_assets 文件夹嵌入到应用包中。
6、集成到 Xcode 工程
Flutter.xcframework 被复制到 iOS 项目的构建目录,供 Xcode 使用。Runner.xcodeproj 中的配置会引用这个框架,使其成为最终 iOS 应用的一部分。
行者常至,为者常成!