Flutter 启动及环境配置

简介: Flutter 启动及环境配置

Flutter run 参数


通过前面会发现,flutter run后面可以跟不同的参数[arguments],具体有哪些参数如下所示:

arguments 说明
–debug 调试版本,这是默认模式
–profile profile版本
–release 发布版本
–target-platform 指定app运行的目标平台,比如android-arm/android-arm64,iOS平台不可用
–target= 主入口,默认值lib/main.dart
–observatory-port 指定observatory端口,默认为0(随机生成可用端口)
–disable-service-auth-codes 关闭observatory服务鉴权
–trace-startup 跟踪应用启动/退出,并保存trace到文件
–trace-skia 跟踪skia,用于调试GPU线程
–trace-systrace 转为systrace,适用于Android/Fuchsia
–dump-skp-on-shader-compilation 转储触发着色器编译的skp,默认关闭
–verbose-system-logs 包括来自flutter引擎的详细日志记录
–enable-software-rendering 开启软件渲染,默认采用OpenGL或者Vulkan
–skia-deterministic-rendering 确定性采用skia渲染
–no-hot 可关闭热重载,默认是开启
–start-paused 应用启动后暂停
–local-engine-src-path 指定本地引擎源码路径,比如xxx/engine/src
–local-engine 指定本地引擎类型,比如android_profile


Flutter run 原理说明


flutter run过程涉及多个flutter相关命令,其包含关系如下所示:


image.png


flutter命令的整个过程位于目录flutter/packages/flutter_tools/,对于flutter run命令核心功能包括以下几部分:

  1. flutter build apk:通过gradle来构建APK,由以下两部分组成:
  • flutter build aot,分为如下两个核心过程,该过程详情见下一篇文章
  • frontend_server前端编译器生成kernel文件
  • gen_snapshot来编译成AOT产物 - flutter build bundle,将相关文件放入flutter_assets目录
  1. 通过adb install来安装APK
  2. 通过adb am start来启动应用


Flutter 环境配置


之前做后端开发的时候,不管是什么语言或者框架,都习惯根据不同环境加载不同的开发配置,比如本地开发的时候,加载 local.env 配置,部署开发环境的时候加载 develop.env 配置,通常通过一个环境变量来决定加载相应的配置。最近在开发一款 Flutter App,我也希望 App 在不同的环境中加载不同的配置文件,实现的方式如下,如有不妥还请指出。 首先在lib建立多个main.dart,比如main_local.dart表示本地开发运行时执行的入口文件,main_develop.dartmain.dart分别表示开发环境和生产环境:


lib/
├── api/
├── main.dart
├── main_develop.dart
├── main_local.dart
├── models/
├── pages/
├── utils/
└── widgets/

这样如果我们运行在本地开发,那么执行


flutter run -t lib/main_local.dart


那么如何在执行本地开发环境的时候来调用本地开发的配置呢?其实很简单,我来定义配置文件,比如utils/config.dart


enum Env {
  PROD,
  DEV,
  LOCAL,
}
class Config {
  static Env env;
  static String get apiHost {
    switch (env) {
      case Env.PROD:
        return "http://yuanxuxu.com";
      case Env.DEV:
        return "http://develop.yuanxuxu.com";
      case Env.LOCAL:
      default:
        return "http://local.yuanxuxu.com";
    }
  }
}


其中Env就是一个环境变量,比如我们要获取 api 请求的地址,那么根据环境变量来获取不同的请求地址,接下来我们只要在运行的入口函数 main 中定义我们当前运行的环境变量,在main_local.dart中定义:


import 'package:xxx/utils/config.dart';
void main() {
  Config.env = Env.LOCAL; //设定运行环境的环境变量
  runApp(new MaterialApp(
  ...
  ));


本地开发环境的话我们就获取到[http://local.yuanxuxu.com](http://local.yuanxuxu.com/):


import 'package:xxx/utils/config.dart';
...
static request(String method, path,
      {Map<String, dynamic> data, header}) async {
    options.baseUrl = Config.apiHost; //这里获取到http://local.yuanxuxu.com
       ...
    return response;
  }

这样就是实现了不同环境对于获取不同的配置了,如果我们现在要编译打包一个 apk 文件用于分发到手机上用于测试预览使用,那么可以打包一个调用 develop 环境配置的 apk 文件:


flutter build apk -t lib/main_develop.dart

打包生产配置的安装包也是一样的,直接 build main.dart 文件。


目录
相关文章
|
5月前
|
数据可视化 Linux Android开发
Flutter相关痛点解决问题之研发链路中的环境配置和打包集成问题如何解决
Flutter相关痛点解决问题之研发链路中的环境配置和打包集成问题如何解决
|
Dart Shell 开发工具
Flutter macOS环境配置
Flutter macOS环境配置
304 0
Flutter macOS环境配置
|
Dart Shell 开发工具
Flutter 环境配置
Flutter 环境配置
223 0
Flutter 环境配置
|
Dart Java 开发工具
Flutter之环境配置与项目搭建
Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图。
2043 0
|
3月前
|
Android开发 iOS开发 容器
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
|
2月前
|
开发框架 Dart 前端开发
Flutter 是谷歌推出的一款高效跨平台移动应用开发框架,使用 Dart 语言,具备快速开发、跨平台支持、高性能、热重载及美观界面等特点。
Flutter 是谷歌推出的一款高效跨平台移动应用开发框架,使用 Dart 语言,具备快速开发、跨平台支持、高性能、热重载及美观界面等特点。本文从 Flutter 简介、特点、开发环境搭建、应用架构、组件详解、路由管理、状态管理、与原生代码交互、性能优化、应用发布与部署及未来趋势等方面,全面解析 Flutter 技术,助你掌握这一前沿开发工具。
66 8
|
2月前
|
存储 JavaScript 前端开发
在Flutter开发中,状态管理至关重要。随着应用复杂度的提升,有效管理状态成为挑战
在Flutter开发中,状态管理至关重要。随着应用复杂度的提升,有效管理状态成为挑战。本文介绍了几种常用的状态管理框架,如Provider和Redux,分析了它们的基本原理、优缺点及适用场景,并提供了选择框架的建议和使用实例,旨在帮助开发者提高开发效率和应用性能。
38 4
|
2月前
|
传感器 前端开发 Android开发
在 Flutter 开发中,插件开发与集成至关重要,它能扩展应用功能,满足复杂业务需求
在 Flutter 开发中,插件开发与集成至关重要,它能扩展应用功能,满足复杂业务需求。本文深入探讨了插件开发的基本概念、流程、集成方法、常见类型及开发实例,如相机插件的开发步骤,同时强调了版本兼容性、性能优化等注意事项,并展望了插件开发的未来趋势。
45 2
|
3月前
|
开发者
鸿蒙Flutter实战:07-混合开发
鸿蒙Flutter混合开发支持两种模式:1) 基于har包,便于主项目开发者无需关心Flutter细节,但不支持热重载;2) 基于源码依赖,利于代码维护与热重载,需配置Flutter环境。项目结构包括AppScope、flutter_module等目录,适用于不同开发需求。
123 3
|
2月前
|
传感器 开发框架 物联网
鸿蒙next选择 Flutter 开发跨平台应用的原因
鸿蒙(HarmonyOS)是华为推出的一款旨在实现多设备无缝连接的操作系统。为了实现这一目标,鸿蒙选择了 Flutter 作为主要的跨平台应用开发框架。Flutter 的跨平台能力、高性能、丰富的生态支持和与鸿蒙系统的良好兼容性,使其成为理想的选择。通过 Flutter,开发者可以高效地构建和部署多平台应用,推动鸿蒙生态的快速发展。
279 0