Flutter依赖库填坑

2022-12-22 08:49:04 浏览数 (3)

场景再现

Flutter宿主需要特定的三方库版本

  1. Android宿主工程中需要存在低版本三方jar库(jar_v1)。
  2. 宿主工程中依赖Flutter plugin工程,该plugin中依赖了三方库pub_dev_lib1,此lib1--->android--->build.gradle中依赖三方jar库(jar_v2)版本。
  3. 宿主工程中不允许jar库的升级,只能使用jar_v1版本。 解决方法:可以指定找一个低版本的pub_dev_lib1 保证其中只依赖低版本的jar_v1

dart-lang中自带三方库升级导致编译问题

  1. Flutter工程中用到了build_runner,本地dart-lang版本是2.17.6。
  2. 编译工程时候出现了Analyzer5.3.0 Crash异常

分析原因:dart-lang 在build_runner之前默认会做代码检测任务(依赖analyzer),analyzer在这个时候升级到高版本导致,解决办法:

  1. 升级本地flutter sdk
  2. 强制指定一个固定旧的analyzer版本

问题解决

工程pubspec.yaml文件中使用dependency_overrides指定固定版本,比如上述问题2可以如下处理

代码语言:javascript复制
dependency_overrides:
  analyzer: 5.2.0

一点想法

默认Flutter使用三方库时候,我们都会这样写,带上^ 如下:

代码语言:javascript复制
analyzer: ^5.2.0

但是在很多时候,本地工程的flutter sdk版本,宿主版本中的jar包注定Flutter中三方库版本只能苟在一个低版本,无法更新,一更新就出错。说到底涉及到的是项目稳定性问题。 如何保证项目稳定性呢?

针对三方库的处理这块我认为可以这么做

  1. 三方库的引入应该保持节制态度,能实现自己实现。 原因是因为它不可控,你永远不知道它哪天会更新啥导致你项目出问题。
  2. 如果要用,就copy代码到项目里。 握在手里的东西才更放心,至少可以掌控住,出问题还有机会改。
  3. 如果代码太多或者没有源码,那么就评估大小且固定版本吧,这样会少很多麻烦。

0 人点赞