当前位置: 首页 > article >正文

Flutter 环境搭建、常用指令、开发细节

一、环境搭建

  • Flutter 插件和包管理平台:pub.dev
  • Flutter 环境安装,官方中文文档,按着官方的来就够了,没啥难度。安卓模拟器可以使用 Android Studio 自带的也可以第三方的,例如:Genymotion
  • 配置环境变量,能全局使用 flutter 指令:

Mac 环境配置

找到存放 Flutter 的文件夹里面的 bin 目录,复制全地址,添加到环境配置文件即可:

$ open ~/.zshrc   # 如果使用的是 Zsh
$ open ~/.bash_profile  # 如果使用的是 Bash

填入环境配置文件内容:

export PATH="$PATH:/Users/dengzemiao/Desktop/Project/flutter/Flutter/flutter/bin"
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

填入内容后,保存执行命令使配置生效:

$ source ~/.zshrc   # 如果使用的是 Zsh
$ source ~/.bash_profile  # 如果使用的是 Bash

Windows 环境配置

  1. 打开环境变量设置

    • 按下 Win + S 键,搜索并打开 环境变量
    • 在弹出的 系统属性 窗口中,点击 环境变量
  2. 添加 FlutterPATH

    • 系统变量 下,找到并选择 Path,点击 编辑
    • 点击 新建,添加 Flutterbin 目录路径,例如:C:\flutter\bin
  3. 点击 确定 保存

二、常用命令

公共命令

# 列出 Flutter 支持的工具链
$ flutter --version# 检查 Flutter 安装环境
$ flutter doctor# 创建项目
$ flutter create project_name# 创建项目并初始化包名
$ flutter create --org com.example project_name# 设备列表
$ flutter devices# 运行并选择设备
$ flutter run# 运行到指定设备
$ flutter run -d <device_id># 清理构建缓存
$ flutter clean# 安装依赖包
$ flutter pub get# 移除指定依赖包
$ flutter pub remove http# 升级依赖包
$ flutter pub upgrade

Android 打包

# 构建 APK 文件
$ flutter build apk# 打包调试版
$ flutter build apk --debug# 打包发布版
$ flutter build apk --release# 生成分层 APK
$ flutter build apk --split-per-abi

iOS 打包

对于 iOS 开发者,可以使用 appuploader 工具来简化打包和上传流程:

# 构建 iOS 应用
$ flutter build ios --release# 使用 appuploader 上传到 App Store
$ appuploader -f build/ios/Release-iphoneos/Runner.app -u your_apple_id -p your_password

三、创建项目

  • 使用 VSCode 创建项目:

    • 方式1:使用 Command + Shift + PCtrl + Shift + P,在弹出面板中输入 Flutter 选择 New Project 创建项目
    • 方式2:使用 $ flutter create project_name 创建项目
  • 项目结构:

my_flutter_project/
├── android/
├── ios/
├── lib/
├── assets/
├── test/
└── pubspec.yaml

四、插件依赖管理

添加插件

# 添加最新版本
$ flutter pub add http# 添加指定版本
$ flutter pub add http:1.0.0

在代码中使用插件

import 'package:http/http.dart' as http;

五、打包发布

iOS 打包注意事项

  1. 确保 Xcode 项目配置正确
  2. 使用 appuploader 可以简化证书管理和上传流程
  3. 测试版可以使用 TestFlight 进行分发

Android 打包注意事项

  1. 配置签名文件
  2. 优化应用图标和启动图
  3. 使用 Google Play Console 发布应用

六、开发工具推荐

  • appuploader:一款专业的 iOS 应用打包和上传工具,可以简化证书管理、打包和上传 App Store 的流程
  • Android Studio:官方推荐的 Android 开发工具
  • VS Code:轻量级代码编辑器,适合 Flutter 开发

七、调试技巧

  • 热重载:按 r
  • 热重启:按 R
  • 查看日志:使用 logger
import 'package:logger/logger.dart';
final Logger logger = Logger();logger.i("Info log");
logger.e("Error log");

通过合理使用这些工具和技巧,可以大大提高 Flutter 开发效率。appuploader 等工具的使用可以显著简化发布流程,让开发者更专注于应用开发本身。

相关文章:

Flutter 环境搭建、常用指令、开发细节

一、环境搭建 Flutter 插件和包管理平台&#xff1a;pub.devFlutter 环境安装&#xff0c;官方中文文档&#xff0c;按着官方的来就够了&#xff0c;没啥难度。安卓模拟器可以使用 Android Studio 自带的也可以第三方的&#xff0c;例如&#xff1a;Genymotion。配置环境变量&…...

使用uni-app框架 写电商商城前端h5静态网站模板项目-手机端-前端项目练习

以前用vue2 分享过一个电商商城前端静态网站项目-电脑端&#xff0c;需要的小伙伴还是很多的&#xff0c;最近又花了几天更新了一个 手机端的 电商商城h5项目&#xff0c;今天也分享一下实现方案。 对于以前写的 电商商城前端静态网站模板-电脑端&#xff0c;有兴趣的小伙伴 可…...

远心镜头原理

文章目录 原理特点分类应用领域 参考&#xff1a;B站优致谱视觉 原理 远心镜头的工作原理基于其特殊的光学设计&#xff0c;旨在解决普通镜头存在的视差问题。它通过将镜头的光轴与成像面垂直&#xff0c;并使主光线平行于光轴&#xff0c;从而确保在一定的物距范围内&#xf…...

centos7修复漏洞CVE-2023-38408

漏洞描述&#xff1a; CVE-2023-38408 是 OpenSSH 组件中的一个远程代码执行&#xff08;RCE&#xff09;漏洞&#xff0c;影响 OpenSSH 代理&#xff08;ssh-agent&#xff09;的安全性。该漏洞被发现于 2023 年 7 月&#xff0c;并被标记为 高危&#xff08;CVSS 评分 7.3&a…...

Scikit-learn使用指南

1. Scikit-learn 简介 定义&#xff1a; Scikit-learn&#xff08;简称 sklearn&#xff09;是基于 Python 的开源机器学习库&#xff0c;提供了一系列算法和工具&#xff0c;用于数据挖掘、数据预处理、分类、回归、聚类、模型评估等任务。特点&#xff1a; 基于 NumPy、SciP…...

React AJAX:深入理解与高效实践

React AJAX&#xff1a;深入理解与高效实践 引言 随着Web应用的日益复杂&#xff0c;前端开发对数据的处理需求也越来越高。React作为目前最流行的前端框架之一&#xff0c;其与AJAX的结合使得数据的异步获取和处理变得更为高效和便捷。本文将深入探讨React与AJAX的关系&…...

uniapp微信小程序封装navbar组件

一、 最终效果 二、实现了功能 1、nav左侧返回icon支持自定义点击返回事件&#xff08;默认返回上一步&#xff09; 2、nav左侧支持既显示返回又显示返回首页icon 3、nav左侧只显示返回icon 4、nav左侧只显示返回首页icon 5、nav左侧自定义left插槽 6、nav中间支持title命名 7…...

python程序进行耗时检查

是的&#xff0c;line_profiler 是一个非常强大的工具&#xff0c;可以逐行分析代码的性能。下面是详细步骤&#xff0c;教你如何使用 line_profiler 来标记函数并通过 kernprof 命令运行分析。 1. 安装 line_profiler 首先需要安装 line_profiler&#xff1a; pip install l…...

用户模块——业务校验工具AssertUtil

AssertUtil 方法的作用 在写代码时&#xff0c;我们经常需要检查某些条件是否满足&#xff0c;比如&#xff1a; 用户名是否已被占用&#xff1f; 输入的邮箱格式是否正确&#xff1f; 用户是否有权限执行某个操作&#xff1f; 一般情况下&#xff0c;我们可能会这样写&am…...

系统思考与心智模式

我们的生命为什么越来越长&#xff1f;因为有了疫苗&#xff0c;有了药物。可这些是怎么来的&#xff1f;是因为我们发现了细菌的存在。但在很久以前&#xff0c;医生、助产士甚至都不洗手——不是他们不负责&#xff0c;而是根本不知道“细菌”这回事。那细菌是怎么被发现的&a…...

【计算机视觉】OpenCV实战项目- 抖音动态小表情

OpenCV实战项目- 抖音动态小表情 替换掉当前机器的文件位置即可运行&#xff1a; ‘C:/Users/baixiong/.conda/envs/python37/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml’ ‘C:/Users/baixiong/.conda/envs/python37/Lib/site-packages/cv2/data/haar…...

数据库--数据库设计

目录&#xff1a; 1.数据库设计和数据模型 2.概念结构设计&#xff1a;E-R模型 3.逻辑结构设计&#xff1a;从E-R图到关系设计 4.数据库规范化设计理论 5.数据库规范化设计实现 1.数据库设计和数据模型 数据库设计会影响数据库自身和上层应用的性能。 一个好的数据库设计可以提…...

[Mac]利用hexo-theme-fluid美化个人博客

接上文,使用Fluid美化个人博客 文章目录 一、安装hexo-theme-fluid安装依赖指定主题创建「关于页」效果展示 二、修改个性化配置1. 修改网站设置2.修改文章路径显示3.体验分类和标签4.左上角博客名称修改5.修改背景图片6.修改关于界面 欢迎大家参观 一、安装hexo-theme-fluid 参…...

黑盒测试的场景法(能对项目业务进行设计测试点)

定义: 通过运用场景来对系统的功能点或业务流程的描述&#xff0c;设计用例遍历场景&#xff0c;验证软件系统功能的正确性从而提高测试效果的一种方法。 场景法一般包含基本流和备用流。 基本流:软件功能的正确流程&#xff0c;通常一个业务只存在一个基本流且基本流有一个…...

通过Anaconda Prompt激活某个虚拟环境并安装第三方库

打开 Anaconda Prompt 在Windows中&#xff0c;可以通过开始菜单搜索 Anaconda Prompt 来打开。&#xff08;红色箭头指向的地方。&#xff09; 激活虚拟环境 输入以下命令来激活您的虚拟环境&#xff08;假设虚拟环境名称为 myenv&#xff09;&#xff1a; conda activate…...

SerDes(Serializer/Deserializer)详解

一、SerDes的定义与核心作用 SerDes&#xff08;串行器/解串器&#xff09; 是一种将 并行数据转换为高速串行数据&#xff08;发送端&#xff09;以及 将串行数据恢复为并行数据&#xff08;接收端&#xff09;的集成电路技术&#xff0c;用于解决高速数据传输中的时序、噪声…...

oneDNN、oneMKL 和 oneTBB 介绍及使用

1. oneDNN&#xff08;Intel oneAPI Deep Neural Network Library&#xff09; 简介 oneDNN 是 Intel 开源的深度学习神经网络加速库&#xff0c;专为 CPU 和 GPU 上的深度学习推理和训练优化。它提供高效的底层算子&#xff08;如卷积、池化、矩阵乘法等&#xff09;&#xff…...

目标检测的训练策略

在目标检测竞赛中&#xff0c;训练策略的优化是提高模型性能的关键。常用的训练策略包括数据预处理、数据增强、超参数调节、损失函数设计、正负样本采样、模型初始化和训练技巧等。以下是一些常见的训练策略&#xff1a; 1. 数据预处理与数据增强 数据归一化&#xff1a;对输…...

深入理解 YUV 颜色空间:从原理到 Android 视频渲染

在视频处理和图像渲染领域&#xff0c;YUV 颜色空间被广泛用于压缩和传输视频数据。然而&#xff0c;在实际开发过程中&#xff0c;很多开发者会遇到 YUV 颜色偏色 的问题&#xff0c;例如 画面整体偏绿。这通常与 U、V 分量的取值有关。那么&#xff0c;YUV 颜色是如何转换为 …...

unidbg读写跟踪还原X-Gorgon

使用版本 33.2.5 mssdk提供给 libsscronet.so 网络库的接口地址是 0x88ee0 参数签名函数调用序列 0x88ee0 -> 0x87e48 -> 0x86d60 -> 0x6B14c 0x6B14c -> 0x6Db40 -> 0x73908-> 0x7d3f0 &#xff08;X-Argus&#xff09; ->…...

全长约8.3公里!宁波象山港跨海大桥南中塔柱云端合龙

快科技3月31日消息&#xff0c;据报道&#xff0c;由中国交建二航局承建的宁波象山港跨海大桥顺利完成南中塔柱合龙施工&#xff0c;标志着这一重大交通工程取得阶段性突破。 这座连接宁波鄞州区与象山县的跨海通道全长8.3公里&#xff0c;其标志性的南主塔采用创新"钻石…...

使用 2 端口探头测量 40 uOhm(2000 安培)PDN 的挑战 – 需要多少 CMRR?

部分 1 / 3 本文是 3 部分系列的第一部分&#xff1a; 第 2 部分 - 测量结果&#xff01; 第 3 部分 - 使用另一台 VNA 的测量结果 介绍 我们大多数人都知道 2 端口测量中的接地回路。我们大多数人也都知道&#xff0c;我们需要引入接地回路隔离器来纠正错误。如果没有&…...

蓝桥杯——统计子矩阵

解法&#xff1a;二维前缀和双指针 代码&#xff1a; #include <iostream> using namespace std; typedef long long ll; ll prefix[505][505], a[250010]; int main() {ll n, m, k, ans 0; cin >> n >> m >> k;for(int i 1; i < n; i)for(int …...

snmp/mib采用子代理模式,编码,部署(二)---多实例处理

snmp/mib采用子代理模式&#xff0c;编码&#xff0c;部署(二)---多实例处理 0.本文针对net-snmp中mib表做处理&#xff0c;即单张表对应后台多个实例. 1.源代码生成 拷贝GSC-MIB-0805.txt到/usr/share/snmp/mibs(具体看自己安装目录&#xff0c;如果找不到&#xff0c;下面解…...

吾爱破解安卓逆向学习笔记(4p)

学习目标&#xff0c;了解安卓四大组件&#xff0c;activity生命周期&#xff0c;同时了解去除部分广告和更新提示。 广告类型 1.启动页广告 2.更新广告 3.横幅广告 安卓四大组件 组件描述Activity(活动)在应用中的一个Activity可以用来表示一个界面&#xff0c;意思可以…...

使用Redis实现轻量级消息队列

使用消息中间件如RabbitMQ或kafka虽然好&#xff0c;但也给服务器带来很大的内存开销&#xff0c;当系统的业务量&#xff0c;并发量不高时&#xff0c;考虑到服务器和维护成本&#xff0c;可考虑使用Redis实现一个轻量级的消息队列&#xff0c;实现事件监听的效果。下面介绍下…...

stm32第十天外部中断和NVIC讲解

一&#xff1a;外部中断基础知识 1.STM32外部中断框架 中断的概念&#xff1a;在主程序运行过程中&#xff0c;出现了特点的中断触发条件&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行 1&…...

26考研——线性表_ 线性表的链式表示_单链表(2)

408答疑 文章目录 三、 线性表的链式表示单链表概念单链表的结构头结点 单链表上基本操作的实现单链表的初始化带头结点和不带头结点的初始化操作注意 求表长操作按序号查找结点按值查找表结点插入结点操作扩展&#xff1a;对某一结点进行前插操作 删除结点操作扩展&#xff1a…...

MATLAB 控制系统设计与仿真 - 31

二次型最优控制 考虑到系统如果以状态空间方程的形式给出&#xff0c;其性能指标为&#xff1a; 其中F,Q,R是有设计者事先选定。线性二次最优控制问题简称LQ(Linear Quadractic)问题,就是寻找一个控制,使得系统沿着由指定初态出发的相应轨迹,其性能指标J取得最小值。 LQ问题分…...

蓝桥杯15届JAVA_A组

将所有1x1转化为2x2 即1x1的方块➗4 然后计算平方数 记得-1 2 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter;public class Main{static BufferedReader in new BufferedReader(new In…...