修复ota_update下载负值BUG,Flutter修改插件方法

  • 发表于
  • flutter

ota_update

Flutte的OTA更新插件。在Android上,它下载文件(带有进度报告)并触发应用安装意图。在iOS上,它会打开指定IPA网址(苹果商店)。BUG在最新的v2.0.2版本是依然存在,下载时得到的下载进度值显示负值,如:

在进度50%-57%之后,它们全部变为负值并减小。

查看了源码发现它使用了int,导致文件过大产生BUG,换用long就行。

Flutter使用本地修改的ota_update插件

现在我们使用的是远程的插件版本,pubspec.yaml

原作者迟迟不修复进度负值的BUG只能我们自己来修改,并替换远程版本为本地版本插件,步骤如下:

  1. 打开路径:~/.pub-cache/hosted/pub.dartlang.org/
  2. 找到你ota_update插件包:ota_update-2.0.2
  3. 将整个包文件夹复制到你应用程序文件夹根目录下(与pubspec.yaml级别相同,不在lib文件夹中),然后重命名版本:例如:ota_update-202-fix
  4. 修改pubspec.yaml以指向本地包,打开项目pubspec.yaml将依赖项路径更改为,例如:ota_update: path: ./ota_update-202-fix/

修改java源文件以修复下载进度负值的BUG

打开上边步骤中的本地包文件:android/src/main/java/sk/fourq/otaupdate/OtaUpdatePlugin.java第56行:

替换为

找到第203-210行

替换为

最后,在文件顶部添加

保存,结束,现在代码及配置都修改完毕了:

  1. flutter clean
  2. flutter run

运行测试发现下载进度值已经正常不再是负值。其它Flutter插件修改流程也是一样的,先变远程为本地,再修改配置引用。