Flutter各个平台的构建产物
条评论在 Flutter 中创建一个新项目,同时支持 Android、iOS、macOS、Windows 和 Linux 平台,假设你已经安装了 Flutter SDK 和必要的开发工具(如 Android Studio、Xcode 等)。
安装 Flutter SDK
按照 Flutter 官网 下载并按照指南进行安装。
创建新项目
打开终端或命令提示符,使用以下命令创建一个新的 Flutter 项目:
1 | flutter create my_flutter_app |
这个命令会创建一个名为 my_flutter_app
的新目录,其中包含一个支持 Android 和 iOS 的 Flutter 项目的初始模板。
启用桌面支持
默认情况下,Flutter 支持 Android 和 iOS。如果你想要为 macOS、Windows 和 Linux 添加支持,你需要为每个桌面平台启用支持。运行以下命令:
1 | cd my_flutter_app |
这些命令会启用桌面平台的支持。在你启用桌面支持之后,你的项目目录中将包括针对每个桌面平台的特定代码和资源。
运行和构建应用
现在你可以尝试在各个平台上运行你的应用了。使用以下命令来运行对应平台的应用:
1 | flutter run -d windows # 运行 Windows 应用 |
各个平台的构建产物
flutter build
命令是用于构建和编译 Flutter 应用程序的重要工具。它可以将您的 Flutter 项目编译成可以在不同平台上运行的二进制文件或包。
在 Flutter 中,当你使用 flutter build
命令构建项目时,每个平台的构建产物(build artifacts)将会被存放在项目目录下特定的位置。
- 基本语法: flutter build <平台>
- 支持的平台:
- apk: 构建 Android APK 文件
- appbundle: 构建 Android App Bundle
- ios: 构建 iOS 应用
- web: 构建 Web 应用
- windows: 构建 Windows 应用
- macos: 构建 macOS 应用
- linux: 构建 Linux 应用
- 常用选项:
- –release: 构建发布版本(默认)
- –debug: 构建调试版本
- –profile: 构建性能分析版本
- –split-debug-info: 分离调试信息
- –obfuscate: 混淆代码
- –target-platform: 指定目标平台架构
- 示例:
- 构建 Android APK: flutter build apk
- 构建 iOS 应用: flutter build ios
- 构建 Web 应用: flutter build web
- 特殊用法:
- flutter build aar: 构建 Android Archive (AAR) 文件,用于将 Flutter 模块集成到现有 Android 项目中
- flutter build bundle: 构建 Flutter 资源包,通常用于自定义构建过程
- 构建过程: build 命令会执行以下步骤:
- 解析项目依赖
- 编译 Dart 代码
- 生成平台特定的代码
- 打包资源文件
- 生成最终的二进制文件或包
- 注意事项:
- 确保在项目根目录下运行命令
- 不同平台可能需要额外的设置或工具(如 iOS 需要 Xcode)
- 构建时间可能较长,特别是首次构建
- 优化技巧:
- 使用 –split-debug-info 和 –obfuscate 选项可以减小应用大小并提高安全性
- 定期清理构建缓存(flutter clean)可以解决一些构建问题
Android
基本命令
1 | flutter build apk |
对于 Android,构建产物默认位于:
1 | <project directory>/build/app/outputs/flutter-apk/ |
在这个目录下,你可以找到 APK 文件(如 app-release.apk
),这是发布到 Android 设备的文件。
构建不同架构的 APK
默认情况下,flutter build apk
会生成一个包含 armeabi-v7a
和 arm64-v8a
(32位和64位 ARM 架构)的 APK。如果你需要为其他架构(如 x86)构建 APK 或者想要减小 APK 文件大小,你可以使用 --split-per-abi
选项:
1 | flutter build apk --split-per-abi |
这将生成针对每个支持的 ABI 的单独 APK 文件,通常用于减少每个 APK 的大小,使其更适合特定设备类型。
构建完成后,APK 文件默认位于以下路径:
1 | [project root]/build/app/outputs/flutter-apk/ |
在这个目录下,你会找到生成的 APK 文件,如:
app-release.apk
:未分割 ABI 的发布版本 APK。app-armeabi-v7a-release.apk
:仅包含armeabi-v7a
架构的发布版本 APK。app-arm64-v8a-release.apk
:仅包含arm64-v8a
架构的发布版本 APK。
这些文件可以直接用于安装或分发。如果你使用的是 --debug
或 --profile
选项,相应的文件名也会反映出来(例如 app-debug.apk
)。
Android App Bundle
在 Flutter 中,构建一个 Android App Bundle (.aab 文件) 是一个常见的需求,特别是当你需要通过 Google Play 发布你的应用时。Android App Bundle 是 Google 推荐的发布格式,因为它允许 Google Play 根据用户的设备配置动态地生成并提供优化的 APK 包,从而减小应用的下载和安装大小。
要构建 Android App Bundle,你可以使用以下 Flutter 命令:
1 | flutter build appbundle |
构建完成后,App Bundle 文件默认位于以下路径:
1 | [project root]/build/app/outputs/bundle/release/ |
在这个目录下,你会找到生成的 .aab
文件,通常命名为 app-release.aab
。
发布到 Google Play
生成的 .aab
文件是准备好上传到 Google Play 的。上传 App Bundle 而不是 APK 有几个好处:
- 大小优化:Google Play 会根据每个用户的设备生成并提供最适合的 APK,这通常会减少应用的下载和安装大小。
- 简化的版本管理:你只需上传一个
.aab
文件,Google Play 会处理不同设备所需的各种 APK 分发。 - 按需加载:你可以配置你的应用以按需加载资源和功能,进一步减少初始下载的大小。
注意事项
确保在构建 App Bundle 之前,你的应用满足所有必要的 Google Play 要求,包括但不限于适当的 AndroidManifest.xml
配置、API 级别要求和权限声明。此外,如果你的应用使用了特定的硬件或软件功能,确保这些功能在 AndroidManifest.xml
中正确声明。
iOS
基本命令
1 | flutter build ios |
对于 iOS,构建产物位于:
1 | <project directory>/build/ios/iphoneos/ |
在这个目录中,你会找到一个 .app
目录,这是实际的应用程序包,通常用于模拟器或真实设备的测试。如果你使用 Xcode 进行归档,归档产物将会在 Xcode 的 Organizer 中。
macOS
基本命令
1 | flutter build macos |
对于 macOS,构建产物位于:
1 | <project directory>/build/macos/Build/Products/Release/ |
这里你可以找到 .app
应用程序包,这是可以直接运行的 macOS 应用。
Windows
基本命令
1 | flutter build windows |
对于 Windows,构建产物位于:
1 | <project directory>/build/windows/x64/runner/Release/ |
或者是 Debug
文件夹,取决于你构建的是发布版还是调试版。在这个目录下,你会找到 .exe
文件及其相关的依赖文件。
Linux
基本命令
1 | flutter build linux |
对于 Linux,构建产物位于:
1 | <project directory>/build/linux/x64/release/bundle/ |
在这个路径中:
- [project root] 是你的 Flutter 项目的根目录。
- x64 表示目标架构,目前 Flutter 支持的是 x64(64位)。
- release 是构建类型,这里是发布版本。如果你构建的是调试版本,这里会是
debug
。 - bundle 目录包含了可执行文件和所有必需的依赖文件,这是最终的发布包。
在 bundle
目录内,你会找到一个可执行文件(通常以你的项目名命名),以及可能的一些资源文件和库文件。这个可执行文件就是你可以直接运行的 Linux 应用程序。
Web
基本命令
1 | flutter build web |
对于 Web 平台,构建产物位于:
1 | <project directory>/build/web/ |
这个目录包含了所有部署到 Web 服务器的静态文件,如 HTML、JavaScript 和 CSS 文件。
确保在构建前选择正确的构建配置(如 Debug 或 Release),因为这将影响构建产物的性能和大小。
在这个 web
目录中,你会找到以下类型的文件和目录:
- **
index.html
**:这是你的应用的入口文件。如果你使用了--base-href
选项,<base>
标签的href
属性将被设置到你指定的路径。 - **
main.dart.js
**:这是你的 Dart 代码编译成 JavaScript 后的文件,是运行你的 Flutter 应用的核心。 - **
assets/
**:包含所有静态资源,如图片、字体以及其他从 Dart 代码中引用的文件。 - **
favicon.png
**:网站的图标文件。 - 其他 JavaScript 和源映射文件:例如,用于调试的
.map
文件等。
部署
当你准备将你的 Flutter Web 应用部署到服务器时,你需要将整个 build/web
目录的内容上传到你的服务器。确保服务器的配置能正确处理你的应用,特别是如果你设置了基本路径(如使用了 --base-href
)。
本地测试
在部署之前,你可以在本地设置一个 HTTP 服务器来测试这些文件,确保一切按预期工作。你可以使用 Python 的 http.server
模块,或者 Node.js 的 http-server
,或者任何其他能够提供静态文件服务的工具。
例如,使用 Python 的简单 HTTP 服务器:
1 | cd [project root]/build/web |
然后在浏览器中访问 http://localhost:8000
来查看你的应用。
确保在实际的生产环境中使用专业的 Web 服务器,如 Nginx 或 Apache,以提供更好的性能和安全性。
本文标题:Flutter各个平台的构建产物
文章作者:xmaihh
发布时间:2024-07-25
最后更新:2024-07-25
原始链接:https://xmaihh.github.io/blog/2024/07/25/flutter-ge-ge-ping-tai-de-gou-jian-chan-wu/
版权声明:采用[CC BY-NC-SA 4.0许可协议]进行许可
分享