6***@qq.com
6***@qq.com
  • 发布:2021-03-27 19:52
  • 更新:2021-10-11 20:19
  • 阅读:1144

【报Bug】急!急!急! uni 文件下载 大文件/或网络带宽不做限流情况下 安卓app无响应

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: bigsur

HBuilderX类型: Alpha

HBuilderX版本号: 3.1.6

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: 小米10

页面类型: nvue

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

使用官方提供的文件下载大文件 不做任何限流操作

预期结果:

app进程不会阻塞app

实际结果:

app卡死 无响应 甚至直接闪退

bug描述:

关于安卓使用uni提供的文件下载api的终极反馈

1.ios正常 安卓下载过程中超过一定大小的文件/或网络带宽过高 此api会完全阻塞app进程 导致无法页面无法后退 最后无响应(此bug论坛已经有人反应但是无任何官方回复)

  1. 寻求替代方案:目前已知的原生下载插件我自己测试了3款下载插件(没有一个能正常用户 包括(大文件无下载回调 / 大文件无法下载 / ios下载闪退 )) 所以应用市场上至少现在无任何可用替代方案
  2. 通过分片下载 分片下载这边我个人的构思是 通过http协议进行切片下载 这样可以代码来控制在安卓端出现的阻塞进程问题 但是最后两个问题 1.请求无法获取到二进制流数据 返回的都是字符串写入 通过io api写入到存储里面的文件是无法读取的 2. app不提供head请求 以为着相关操作需要由服务端来计算切片内容
    以上bug我本人花费了一天的时间进行bug验证 依旧测试查阅相关帖子 官方基本是无任何回复 没有可替代方案 文件下载作为app里面一项基础到不能在基础的功能为何出现此问题官方不进行处理?
2021-03-27 19:52 负责人:DCloud_App_Array 分享
已邀请:
MonikaCeng

MonikaCeng

我遇到这种问题是UI刷新太快
显示下载进度的百分比因为下载太快刷新也非常快,直接卡死
后来改成0.1秒刷新一次UI就没这个问题了
纯下载不刷新UI的话,再快都没卡过

6***@qq.com

6***@qq.com (作者)

你说的这个我有考虑过 也经过了代码实验 结果是没有什么效果的 就算不对UI做刷新进程也还是阻塞状态。我是在nvue。昨天测试的时候文件大小700m

  • MonikaCeng

    我用plus.downloader没卡,uni.download没试过。你用哪个?

    2021-03-27 23:13

  • 6***@qq.com (作者)

    回复 MonikaCeng: 我试一下 plus.downloader 刚才尝试了用uni.download进行分片下载 app还是会卡 但是app能切换页面(但是有个问题:因为多次http请求 资源目标直接限流了)

    2021-03-27 23:24

  • MonikaCeng

    回复 6***@qq.com: 那只能等官方解决了。你能否留段代码,包括用于下载的资源,或者你自己传个100M的到云存储用于测试

    2021-03-27 23:28

  • 6***@qq.com (作者)

    回复 MonikaCeng: 你说的的这个plus.downloader 我也测试了 一样会卡 我稍后上传我录制的视频 是怎的卡到无法操作

    2021-03-27 23:35

  • 6***@qq.com (作者)

    回复 MonikaCeng: mallimage.wozokeji.com/%E5%8D%A1.mp4 你看有多卡

    2021-03-27 23:39

  • 6***@qq.com (作者)

    回复 6***@qq.com: 回复 coding3:

    plus.downloader.createDownload(url)

    plus.downloader.startAll()

    console.log('下载开始')

    // dow.start(url)

    2021-03-27 23:40

  • MonikaCeng

    回复 6***@qq.com: 我是


    const dtask = plus.downloader.createDownload(xxx)  
    dtask.start()

    2021-03-27 23:51

  • 6***@qq.com (作者)

    回复 MonikaCeng: 原理上一样的 一个是下载单文件 一个是下载多文件 我给你个地址 你测试下看看卡不卡

    2021-03-27 23:52

  • 6***@qq.com (作者)

    回复 MonikaCeng: 私信给你了

    2021-03-27 23:52

6***@qq.com

6***@qq.com (作者)

当下载带宽达到15m/s的时候 app基本就卡到不能切换页面了

DCloud_UNI_GSQ

DCloud_UNI_GSQ

看到你在其他帖子的邀请,我顺着爬了过来,即将开始排查

此贴作为此问题的集中反馈和处理贴,有其他类似的都可以链接在一起。

  • 6***@qq.com (作者)

    等你们处理好 我已经纠结好多天了

    2021-03-29 17:42

  • MonikaCeng

    回复 6***@qq.com: 你的链接我还没空测,你让官方的先测测看

    2021-03-30 11:21

  • 6***@qq.com (作者)

    怎么样 BUG确认了吗?

    2021-03-30 17:03

  • 6***@qq.com (作者)

    回复 MonikaCeng: 就等官方进行处理啦

    2021-03-30 17:03

DCloud_UNI_GSQ

DCloud_UNI_GSQ

目前使用两个个低端安卓机器(nexus4、魅族 8x),测试了 vue 和 nvue 均未复现,是网速不够吗?

测试地址使用的是:https://download1.dcloud.net.cn/download/HBuilderX.3.1.6.20210326.full.zip

  • 6***@qq.com (作者)

    what? 我等下给你录制视频 你应该就懂了。我也用你这个地址进行下载测试 (我想表达的是:在下载过程ui会阻塞。而不是下载不成功哦)

    2021-03-30 22:56

  • 6***@qq.com (作者)

    卡顿视频地址:http://mallimage.wozokeji.com/1617118752998359.mp4


    BUG描述:

    1.打开app后app页面可以正常进行切换

    2.当我点击首页播放的时候是模拟了一个用户的下载行为 (因为本地带宽500m左右 您这边提供的视频大小为200m 会在几秒内下载完毕 所以我切换了一个大小为5.0GB的文件)

    3.开始下载行为后 miui监听到的下载带宽约为100m的样子 实际下载数度大约为12mb/s 这个时候手机已经无法切换页面 (在实际的app状态中 是无法进行页面后退 点击 所有的ui事件都会在下载完成后才会触发)

    4.如上描述 我这边进行了wifi切断的操作(手机无sim卡 所以意味着下载行为中断)

    5.切断wifi后 ui事件开始触发 所有在下载期间积累的事件都会在下载行为停止后挨个触发


    6.退出app后我进行第二次模拟( 共有两次下载行为 原因是 第一次下载文件下载速度只有4m一秒 UI未出现卡断 所以我 积累了两次下载行为 ) 现在下载带宽为12m 一秒的样子 这个时候ui已经开始了卡断

    7.我再次模拟中断下载后ui事件开始触发

    2021-03-30 23:52

  • 6***@qq.com (作者)

    请官方尽快处理

    2021-03-30 23:54

  • DCloud_UNI_GSQ

    回复 6***@qq.com: 视频之前已经看过一遍了,模拟测试未复现,所以询问一下是不是哪个条件没模拟对

    2021-03-31 11:05

  • DCloud_UNI_GSQ

    回复 6***@qq.com: 你想表达的意思早就看明白了,是复现不了,不是看不懂你表达的意思

    2021-03-31 11:06

  • 6***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 可能是文件太小了吧 下载太快了 用大文件进行您看下 另外我这边新建一个测试项目 等下打包给你们

    2021-03-31 11:20

  • 6***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 我这边新建的测试项目 发现问题还是有的哦 我上传后您这边看下 (另外有一点 如果下载速度只有几百kb 问题不会浮现 我这台设备下载 8.5m/s 左右的样子 就卡了)

    2021-03-31 11:35

  • 6***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 项目已上传 另外也独立录制了视频在文件夹里面 https://ask.dcloud.net.cn/file/download/file_name-5LiL6L295Y2h6aG/5rWL6K+VLnppcA==__url-Ly9pbWctY2RuLXFpbml1LmRjbG91ZC5uZXQuY24vdXBsb2Fkcy9hbnN3ZXIvMjAyMTAzMzEvY2JhOWQ0NWY1MDY2OTQ5ZmNmNGE0MGFmYWE1YTBmMzA=

    2021-03-31 11:46

  • 6***@qq.com (作者)

    回复 DCloud_UNI_GSQ: 另外换了一台荣耀 跑我这个上传的这个项目 (也出现了事件延迟 但是没有我那个小米10严重) 因为这台设备的下载速度达不到我那个小米的速度 我意思是如果我这边提供的下载地址在你们当地下载速度跑不到10m/s 一秒的速度的话 您这边可以单独找一个文件测试下

    2021-03-31 12:03

6***@qq.com

6***@qq.com (作者)

把测试拿出去祭天

DCloud_Android_DQQ

DCloud_Android_DQQ

此问题HBuilderX3.1.10已经修复。

该问题目前已经被锁定, 无法添加新回复