Flutter使用Flutter_xupdate 远程更新app实现记录

在学校小组合作做了一个项目,不断完善,不断学习,哩哩啦啦拖到了腊月二十三,首先祝大家小年快乐。

这次项目主要实现的功能是利用Flutter_xupdate插件实现远程更新app。

前言

网络上有很多远程更新app的逻辑,我是第一次搞这个,参考了很多文章。这些文章大都逃不开一个框架,就是下面的这个步骤。这让我非常的懊恼,因为那些文章对我这个小白很不友好。正在懊恼之际,看到了大佬写的Flutter_Xupdate插件,这让我有种如获至宝的感觉(当时还不明白,只是有插件我就感觉好太多)。现在成功地通过Flutter_Xupdate插件实现了远程更新app的功能,对大佬更加地顶礼膜拜,因为代码量真的很少!

常规远程更新app的步骤

1、获取本地应用信息

2、和服务器端应用版本进行比较

3、如果服务器端应用版本较高,则进行升级

Flutter_Xupdate 远程更新app的步骤

项目地址:flutter_xupdate | Flutter package (pub.dev)

如果你也喜欢作者的项目,请给作者一个like。

1、初始化(代码已经给出,只需要修改参数)

2、创建参数配置文件

3、补充相关逻辑(Ctrl+CV)

4、运行

总的来说,作者已经为我们完成了太多的步骤。教程作者已经写的非常详细,不再赘述。但是运行代码时候仍然会遇到一些问题,必须做一些改动。我做的改动如下:

改动

1、初始化源代码复制到项目后,会出现一大段的波浪线。根据排查,是FlutterXUpdate的一些Handler方法的参数必须允许为空

2、一些教程需要设置Android/app/main/res/values/styles.xml文件中的Theme,更改为:Theme.AppCompat.Light.NoActionBar,因为如果你不更改的话,项目会报一个错误:你必须使用Theme.AppCompat 的theme。

改个Theme不是很简单的事情吗?然后我就改了。改了之后项目彻底不行了,原来还可以运行,只是没有弹窗(可能弹窗是使用了Theme.AppCompat风格),现在报错找不到上面的风格,项目直接无法运行。

最后我更新了Flutter_Xupdate为最新版(目前是3.0.0),最新版不设置风格也可以运行。

曲折

因为是远程获取到apk,所以,apk需要放在一个地方,让项目能够通过网络下载。最初我选择的是gitee。

创建一个gitee仓库,上传apk文件,然后通过审查元素获取到网址,复制到地址栏,回车,浏览器弹出下载页面——完美。要的就是这个效果,但是当我把这个url配置到json文件里面的时候,出现了403的错误。最后排查原因,是忽略了什么参数。因为必须是当前登录了csdn账号的浏览器(不能关闭),才能访问到apk。可能再带个什么参数就能请求到了。

此路不通,我尝试第二个方法,因为我自己有服务器,于是就在服务器上开了个Apache,然后把相关文件放到服务器上。刚开始用模拟器好好的,一切正常,弹窗也出现了,也能正常下载,正常安装,但是切换到真机之后,又一个尴尬出现了,服务器域名没有配置ssl,导致不能https请求,看网上的很多教程,普遍提出有四个解决方案,但是很遗憾,我的flutter好像不太聪明。于是这个方案也不行。有三个都不行,只有给域名配置ssl没有尝试,因为太麻烦了。

我又尝试了七牛云的对象存储,很便宜,很简单。当我的手机上出现了更新的弹窗时,我的内心是无比激动的,我终于解决了这个问题!!我为了实现这个功能已经奋战了一整天!但是...横亘在程序员面前的一座大山没那么容易搬走,又一个问题出现了:使用七牛云,每次更新apk,apk的地址也会改变。因为这个url是被打包到apk当中,如果url一直在变,还打什么包?为了解决这个问题,我又尝试了几个小时,最终无功而返,独自一人黯然神伤。最后啥也别说了,就老老实实配置ssl吧。

感想

我很早之前就说过:失败的残酷之处在于,在成功之前,一切的尝试都等于0。
而找bug的残酷之处在于,bug往往存在于极细微之处,是粗心大意者不能逾越的鸿沟,即使你找到了bug,一切的尝试都还等于0。。为了实现这个功能,我学到了什么呢?是gitee仓库不能远程下载apk?是我的网站必须要配置ssl?还是说七牛云真不好用?我扪心自问,什么都没学到。程序员最好的出路应该不是敲代码吧。

  • 32
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值