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

【apply from: “$flutterRoot/packages/flutter_tools/gradle/flutter.gradle“作用】

这行代码的作用是将 Flutter 的 Gradle 构建脚本集成到 Android 项目中,具体细节如下:


作用解析

  1. 引入 Flutter 构建逻辑
    flutter.gradle 是 Flutter SDK 的核心构建脚本,它负责:

    • 编译 Dart 代码为原生二进制文件(AOT/JIT)
    • 处理 Flutter 资源(图片、字体等)
    • 集成 Flutter 插件(Plugin)的依赖
    • 配置构建类型(debug/release/profile)
    • 添加 flutter build 相关任务(如 assembleDebug
  2. 动态路径依赖
    $flutterRoot 是一个 路径变量,指向 Flutter SDK 的安装目录。
    例如,若 Flutter 安装在 /Users/name/flutter,则实际路径为:
    /Users/name/flutter/packages/flutter_tools/gradle/flutter.gradle


$flutterRoot 无法读取的原因

该变量 不会自动存在于 Gradle 环境 中,需要手动定义。常见原因和解决方案:

1. 未在 gradle.properties 中定义

解决方法:在项目的 android/gradle.properties 文件中添加:

flutterRoot=/path/to/your/flutter/sdk  # 替换为你的实际路径

例如:flutterRoot=C:\\flutter(Windows)或 /Users/name/flutter(macOS/Linux)

2. 环境变量未传递

虽然 Flutter 命令行工具会自动设置环境变量 FLUTTER_ROOT,但 Gradle 不会直接读取系统环境变量。
解决方法:在 android/build.gradle 开头添加:

ext.flutterRoot = System.getenv("FLUTTER_ROOT") ?: "<手动路径>"
3. 路径格式错误(Windows 常见)

Windows 路径中的反斜杠 \ 和特殊字符(如空格)需转义:

flutterRoot=C:\\flutter_sdk  # 双反斜杠
# 或
flutterRoot=C:/flutter_sdk   # 改用正斜杠
4. Flutter 项目未正确初始化

如果是新建的 Flutter 项目,确保运行过:

flutter create .  # 在项目根目录执行,生成 Android/iOS 配置文件

标准 Flutter 项目中的配置

在正常的 Flutter 项目中,flutterRoot 是通过 Flutter 工具链自动注入 的,无需手动定义。检查以下文件:

  • android/settings.gradle 中通常包含:
    include ':flutter'
    project(':flutter').projectDir = new File('<自动生成的路径>/flutter')
    
    这里的路径由 flutter create 自动配置。

总结

问题解决方案
变量未定义gradle.properties 中声明 flutterRoot
环境变量未传递build.gradle 中用 System.getenv() 读取
路径格式错误使用双反斜杠 \\ 或正斜杠 / 替换路径
项目未初始化运行 flutter create . 生成配置文件

手动定义示例(临时方案):

apply from: "${System.getenv('FLUTTER_ROOT')}/packages/flutter_tools/gradle/flutter.gradle"
http://www.dtcms.com/a/268504.html

相关文章:

  • 云计算领域“XaaS”是什么?
  • 使用CocoaPods集成第三方SDK - 从零开始完整指南
  • 开源 C# .net mvc 开发(七)动态图片、动态表格和json数据生成
  • H3初识——入门介绍之路由、路由元数据
  • Maven 依赖管理中的 <optional> 与 <scope>标签
  • 管道机器人手臂机械结构设计cad【8张】+三维图+设计说明书+绛重
  • PDF 上传并保存到 MinIO 数据库
  • 基于Python实现LSTM对股票走势的预测
  • 机器学习知识
  • 医疗AI底层能力全链条工程方案的深度分析:从技术突破到临床应用
  • Mask机制​​中的​​Padding Mask​​ 和 ​​Sentence Mask
  • DCL-2-权限控制
  • 项目进度受上游依赖影响大,如何降低风险
  • 国民经济行业分类 GB/T 4754—2017 (PDF和exce版本)
  • .NET9 实现 JSON 序列化和反序列化(Newtonsoft.Json System.Text.Json)性能测试
  • Mysql8.0高可用集群架构实战
  • MySQL 8.0 OCP 1Z0-908 题目解析(21)
  • 熟练掌握ModbusTCP转PROFINET网关的互转技术
  • 深入解析迭代器模式:优雅地遍历聚合对象元素
  • 数据挖掘:深度解析与实战应用
  • IRF堆叠技术的主要优势
  • 学车笔记6
  • 李宏毅genai 笔记:预训练-对齐
  • 【Pyhton】文件读取:读取整个(大型)文件
  • 锁和事务的关系
  • Web攻防-XMLXXE上传解析文件预览接口服务白盒审计应用功能SRC报告
  • Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式
  • .golangci.yml文件配置
  • 机器学习之线性回归
  • mybatis-plus从入门到入土(二):单元测试