技术经验谈 技术经验谈
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hss01248

一号线程序员
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 学习资料

  • 技术选型

  • 要点

    • dart语言核心要点
    • 工程化

      • flutter依赖管理
        • 1.私有化部署的pub
        • 2. Local - Save in some local folder
        • 3. Hosted - Pushed on Github, Gitlab etc.
        • 覆写
        • 输出依赖树:
      • flutter代码模板优化和禁用.android文件夹刷新
      • flutter客户端项目适配web做的一些工作
      • web跨域问题终结者
      • flutter编译流程修改
      • flutter工程的模块化架构
      • flutter web编译瘦身
      • webview_flutter官方插件的增强-对inputfile和权限请求的支持
    • flutter异步
    • flutter工程化
    • flutter存储相关
    • flutter状态管理
    • flutter网络框架以及相关要点
    • flutter图片相关
    • flutter可观测性和调试
    • flutter插件开发
    • flutter路由管理
    • 遇到的问题
  • 经验

  • flutter
  • 要点
  • 工程化
hss01248
2022-08-31
目录

flutter依赖管理

# flutter依赖管理

推荐直接看官方文档

参考: dependencies (opens new window)

# 特点

  • 源码依赖
  • 依赖传递,依赖冲突处理方面远弱于maven,只是cocopods级别

# 问题

  • 如果查看/输出整棵依赖树?

  • 间接依赖的库的api无法调用?必须再次声明那个库才能调用.

  • 如何输出每次发版的依赖具体版本/git commit--> pubspec.lock文件

  • 如何强制依赖? --> 直接写具体版本号就行,不要写动态版本号

  • 依赖冲突时怎么解决?---> dependency_overrides 写法:

    https://juejin.cn/post/6844903746061729806

    dependencies:
      some_package:
      other_package:
    # 这里:
    dependency_overrides:
      url_launcher: '0.4.3'
    
    1
    2
    3
    4
    5
    6

    和Android的这种写法等价:

    configurations.all {
        resolutionStrategy {
            force 'com.google.guava:guava:23.0-android'
        }
    }
    
    1
    2
    3
    4
    5

    ios CocoaPods 没有锁定版本功能,弱鸡.

  • 如何排除依赖?

    一般是两个依赖库里有类名重复,所以需要排除一个. 但dart不提供排除的功能,而是提供导入时别名的功能:

    这种编译时异常,只出现在同一个类中导入同名类时发生. 并没有java那种编译器严格校验所有包的所有类名的严格校验方式.

    image-20221011104739568

  • 拉取依赖如何加速?

第一组:
变量名称:FLUTTER_STORAGE_BASE_URL
变量值:https://storage.flutter-io.cn

第二组:
变量名称:PUB_HOSTED_URL
变量值:https://pub.flutter-io.cn
1
2
3
4
5
6
7
  • 如何私有化部署依赖仓库?

# 版本号规则

版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  • 主版本号:当你做了不兼容的 API 修改,
  • 次版本号:当你做了向下兼容的功能性新增,
  • 修订号:当你做了向下兼容的问题修正。
any # 所有版本,等同于不写。对pub运行性能有影响,不推荐
1.2.3 # 明确的版本号
'>=1.2.3' # 还有 >1.2.3, <=1.2.3, <1.2.3
^1.2.3 # Caret syntax 等同于 >=1.2.3 <2.0.0
1
2
3
4

# 1 写法

依赖可以放到pub.dev, 本地文件,以及git

# 0.pub.dev

dependencies:
  transmogrify: ^1.0.0
1
2

# 1.私有化部署的pub

dependencies:
   zq_log:
      version: ^0.0.1
      hosted:
        name: zq_log
        url: http://192.168.x.xx:4000/
        
        
        # 简写
dependencies:
  zq_log:
    hosted: https://some-package-server.com
    version: ^1.4.0
1
2
3
4
5
6
7
8
9
10
11
12
13

# 2. Local - Save in some local folder

dependencies:
  library_name:
   path: /path/to/library_name
1
2
3

# 3. Hosted - Pushed on Github, Gitlab etc.

git需要每个依赖都搞一个工程,比较蛋疼

dependencies:
  library_name: xxxx
   git: https://github.com/username/library_name
1
2
3

Or to target specific branch

dependencies:
  library_name: xxxx
   git:
    url: https://github.com/username/library_name.git
    ref: dev    #branch name
1
2
3
4
5

Or to target specific commit

dependencies:
  library_name:
   git:
    url: https://github.com/username/library_name.git
    ref: e234072340    #commit reference id
1
2
3
4
5

# 覆写

dependencies:
  transmogrify: ^1.2.0
dependency_overrides:
  transmogrify:
    path: ../transmogrify_patch/
    
 # 或覆写版本号:
 dependencies:
  transmogrify: ^1.2.0
dependency_overrides:
  transmogrify: '3.2.1'
1
2
3
4
5
6
7
8
9
10
11

# 输出依赖树:

https://dart.dev/tools/pub/cmd/pub-deps

并不是tree,只有两层

flutter pub deps  --no-dev
1

image-20221020112736425

--json: json格式输出

image-20221020113149639

# 2 pub私有化部署

参考Flutter 搭建私有 Pub 仓库 Docker 部署 (opens new window)

使用字节的unpub, 用docker compose一键部署

如下所述:

首先拉取 GitHub 地址 (opens new window) 代码,安装 docker (opens new window) 环境, 然后执行下面命令即可

https://github.com/zeqinjie/unpub-2.0.0-docker

# 先安装 docker 环境启动后, 在当前 docker-compose.yml 文件下执行下面命令即可
docker-compose up -d 
1
2

发包:

flutter packages pub publish
1

需要配置: publish_to

name: pkg_test_unpub
description: A new Flutter package project.
version: 0.0.3
homepage: https://juejin.cn/
publish_to: https://pub.xxx.com/
1
2
3
4
5
编辑 (opens new window)
上次更新: 2022/10/21, 17:50:31
dart语言核心要点
flutter代码模板优化和禁用.android文件夹刷新

← dart语言核心要点 flutter代码模板优化和禁用.android文件夹刷新→

最近更新
01
截图后的自动压缩工具
12-27
02
图片视频文件根据exif批量重命名
12-27
03
chatgpt图片识别描述功能
02-20
更多文章>
Theme by Vdoing | Copyright © 2020-2025 | 粤ICP备20041795号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式