lingochamp / okdownload

A Reliable, Flexible, Fast and Powerful download engine.
Apache License 2.0
5.13k stars 767 forks source link

targetSDK升级到30后无法正常使用 #506

Open shijia109 opened 6 months ago

shijia109 commented 6 months ago

OkDownload Version

v1.0.8

Problem Describe

如题,升级targetsdk到30后,demo无法正常下载,log有报错,不知道原因

Log

2023-12-12 20:31:54.511 17274-17274/com.liulishuo.okdownload.sample D/DownloadDispatcher: enqueueLocked for single task: com.liulishuo.okdownload.DownloadTask@ad87d5c1@1@https://cdn.llscdn.com/yy/files/xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk@/storage/emulated/0/Android/data/com.liulishuo.okdownload.sample/cache/null 2023-12-12 20:31:54.513 17274-17378/com.liulishuo.okdownload.sample D/CallbackDispatcher: taskStart: 1 2023-12-12 20:31:54.518 17274-17378/com.liulishuo.okdownload.sample I/TetheringManager: registerTetheringEventCallback:com.liulishuo.okdownload.sample 2023-12-12 20:31:54.559 17274-17378/com.liulishuo.okdownload.sample D/CallbackDispatcher: -----> start trial task(1) {range=[bytes=0-0]} 2023-12-12 20:31:54.861 17274-17378/com.liulishuo.okdownload.sample D/ConnectTrial: task[1] redirect location: null 2023-12-12 20:31:54.863 17274-17378/com.liulishuo.okdownload.sample D/CallbackDispatcher: <----- finish trial task(1) code[206]{accept-ranges=[bytes], access-control-allow-origin=[], access-control-expose-headers=[X-Log, X-Reqid, Content-Length], access-control-max-age=[2592000], cache-control=[public, max-age=31536000], content-disposition=[attachment; filename="xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk"; filename=utf-8''xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk], content-length=[1], content-range=[bytes 0-0/43994005], content-transfer-encoding=[binary], content-type=[application/vnd.android.package-archive], date=[Tue, 12 Dec 2023 12:31:53 GMT], etag=["lspklu1kkBkLwQipDy2CCLJRtTUl"], last-modified=[Mon, 11 Dec 2017 07:58:13 GMT], server=[openresty], timing-allow-origin=[], x-bill=[Tbl:llss;FileType:0], x-cache=[HIT from BC31_dx-jiangsu-xuzhou-22-cache-1(baishan)], x-log=[X-Log], x-m-log=[QNM:xs1171;QNM3:56], x-m-reqid=[NIkAADsfwreUfJ0X], x-qnm-cache=[MissFg], x-reqid=[uLsAAACi528BzpcX], x-ser=[BC146_dx-lt-yd-jiangsu-huaian-25-cache-2, BC31_dx-jiangsu-xuzhou-22-cache-1]} 2023-12-12 20:31:54.863 17274-17378/com.liulishuo.okdownload.sample D/DownloadDispatcher: is file conflict after run: 1 2023-12-12 20:31:54.864 17274-17378/com.liulishuo.okdownload.sample D/DownloadCall: breakpoint invalid: download from beginning because of local check is dirty 1 fileExist[true] infoRight[false] outputStreamSupport[true] com.liulishuo.okdownload.core.download.BreakpointLocalCheck@fee54b0 2023-12-12 20:31:54.875 17274-17378/com.liulishuo.okdownload.sample D/CallbackDispatcher: downloadFromBeginning: 1 2023-12-12 20:31:54.877 17274-17391/com.liulishuo.okdownload.sample D/DownloadChain: create connection on url: https://cdn.llscdn.com/yy/files/xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk 2023-12-12 20:31:54.878 17274-17391/com.liulishuo.okdownload.sample D/HeaderInterceptor: AssembleHeaderRange (1) block(2) downloadFrom(29329337) currentOffset(0) 2023-12-12 20:31:54.878 17274-17391/com.liulishuo.okdownload.sample D/CallbackDispatcher: -----> start connection task(1) block(2) {if-match=["lspklu1kkBkLwQipDy2CCLJRtTUl"], range=[bytes=29329337-43994004]} 2023-12-12 20:31:54.879 17274-17390/com.liulishuo.okdownload.sample D/DownloadChain: create connection on url: https://cdn.llscdn.com/yy/files/xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk 2023-12-12 20:31:54.880 17274-17389/com.liulishuo.okdownload.sample D/DownloadChain: create connection on url: https://cdn.llscdn.com/yy/files/xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk 2023-12-12 20:31:54.882 17274-17390/com.liulishuo.okdownload.sample D/HeaderInterceptor: AssembleHeaderRange (1) block(1) downloadFrom(14664669) currentOffset(0) 2023-12-12 20:31:54.882 17274-17389/com.liulishuo.okdownload.sample D/HeaderInterceptor: AssembleHeaderRange (1) block(0) downloadFrom(0) currentOffset(0) 2023-12-12 20:31:54.882 17274-17390/com.liulishuo.okdownload.sample D/CallbackDispatcher: -----> start connection task(1) block(1) {if-match=["lspklu1kkBkLwQipDy2CCLJRtTUl"], range=[bytes=14664669-29329336]} 2023-12-12 20:31:54.882 17274-17389/com.liulishuo.okdownload.sample D/CallbackDispatcher: -----> start connection task(1) block(0) {if-match=["lspklu1kkBkLwQipDy2CCLJRtTUl"], range=[bytes=0-14664668]} 2023-12-12 20:31:54.920 17274-17391/com.liulishuo.okdownload.sample D/CallbackDispatcher: <----- finish connection task(1) block(2) code[206]{accept-ranges=[bytes], access-control-allow-origin=[], access-control-expose-headers=[X-Log, X-Reqid, Content-Length], access-control-max-age=[2592000], cache-control=[public, max-age=31536000], content-disposition=[attachment; filename="xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk"; filename=utf-8''xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk], content-length=[14664668], content-range=[bytes 29329337-43994004/43994005], content-transfer-encoding=[binary], content-type=[application/vnd.android.package-archive], date=[Tue, 12 Dec 2023 12:31:53 GMT], etag=["lspklu1kkBkLwQipDy2CCLJRtTUl"], last-modified=[Mon, 11 Dec 2017 07:58:13 GMT], server=[openresty], timing-allow-origin=[], x-bill=[Tbl:llss;FileType:0], x-cache=[HIT from BC31_dx-jiangsu-xuzhou-22-cache-1(baishan)], x-log=[X-Log], x-m-log=[QNM:xs1171;QNM3:56], x-m-reqid=[NIkAADsfwreUfJ0X], x-qnm-cache=[MissFg], x-reqid=[uLsAAACi528BzpcX], x-ser=[BC146_dx-lt-yd-jiangsu-huaian-25-cache-2, BC31_dx-jiangsu-xuzhou-22-cache-1]} 2023-12-12 20:31:54.920 17274-17391/com.liulishuo.okdownload.sample D/CallbackDispatcher: fetchStart: 1 2023-12-12 20:31:54.921 17274-17391/com.liulishuo.okdownload.sample D/MultiPointOutputStream: Create new file: xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk 2023-12-12 20:31:54.923 17274-17391/com.liulishuo.okdownload.sample D/MultiPointOutputStream: Create output stream write from (1) block(2) 29329337 2023-12-12 20:31:54.926 17274-17391/com.liulishuo.okdownload.sample W/DownloadUriOutputStream: fallocate() not supported; falling back to ftruncate() 2023-12-12 20:31:54.927 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream start flush looper task[1] with syncBufferIntervalMills[2000] syncBufferSize[65536] 2023-12-12 20:31:54.928 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream sync success (1) block(2) syncLength(4096) currentOffset(4096) 2023-12-12 20:31:55.140 17274-17390/com.liulishuo.okdownload.sample D/CallbackDispatcher: <----- finish connection task(1) block(1) code[206]{accept-ranges=[bytes], access-control-allow-origin=[], access-control-expose-headers=[X-Log, X-Reqid, Content-Length], access-control-max-age=[2592000], cache-control=[public, max-age=31536000], content-disposition=[attachment; filename="xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk"; filename=utf-8''xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk], content-length=[14664668], content-range=[bytes 14664669-29329336/43994005], content-transfer-encoding=[binary], content-type=[application/vnd.android.package-archive], date=[Tue, 12 Dec 2023 12:31:53 GMT], etag=["lspklu1kkBkLwQipDy2CCLJRtTUl"], last-modified=[Mon, 11 Dec 2017 07:58:13 GMT], server=[openresty], timing-allow-origin=[], x-bill=[Tbl:llss;FileType:0], x-cache=[HIT from BC31_dx-jiangsu-xuzhou-22-cache-1(baishan)], x-log=[X-Log], x-m-log=[QNM:xs1171;QNM3:56], x-m-reqid=[NIkAADsfwreUfJ0X], x-qnm-cache=[MissFg], x-reqid=[uLsAAACi528BzpcX], x-ser=[BC146_dx-lt-yd-jiangsu-huaian-25-cache-2, BC31_dx-jiangsu-xuzhou-22-cache-1]} 2023-12-12 20:31:55.140 17274-17390/com.liulishuo.okdownload.sample D/CallbackDispatcher: fetchStart: 1 2023-12-12 20:31:55.144 17274-17389/com.liulishuo.okdownload.sample D/CallbackDispatcher: <----- finish connection task(1) block(0) code[206]{accept-ranges=[bytes], access-control-allow-origin=[], access-control-expose-headers=[X-Log, X-Reqid, Content-Length], access-control-max-age=[2592000], cache-control=[public, max-age=31536000], content-disposition=[attachment; filename="xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk"; filename=utf-8''xs8qmxn8-lls-LLS-5.8-800-20171207-111607.apk], content-length=[14664669], content-range=[bytes 0-14664668/43994005], content-transfer-encoding=[binary], content-type=[application/vnd.android.package-archive], date=[Tue, 12 Dec 2023 12:31:53 GMT], etag=["lspklu1kkBkLwQipDy2CCLJRtTUl"], last-modified=[Mon, 11 Dec 2017 07:58:13 GMT], server=[openresty], timing-allow-origin=[], x-bill=[Tbl:llss;FileType:0], x-cache=[HIT from BC31_dx-jiangsu-xuzhou-22-cache-1(baishan)], x-log=[X-Log], x-m-log=[QNM:xs1171;QNM3:56], x-m-reqid=[NIkAADsfwreUfJ0X], x-qnm-cache=[MissFg], x-reqid=[uLsAAACi528BzpcX], x-ser=[BC146_dx-lt-yd-jiangsu-huaian-25-cache-2, BC31_dx-jiangsu-xuzhou-22-cache-1]} 2023-12-12 20:31:55.144 17274-17389/com.liulishuo.okdownload.sample D/CallbackDispatcher: fetchStart: 1 2023-12-12 20:31:55.147 17274-17390/com.liulishuo.okdownload.sample D/MultiPointOutputStream: Create output stream write from (1) block(1) 14664669 2023-12-12 20:31:56.030 17274-17354/com.liulishuo.okdownload.sample D/RemitSyncExecutor: sync info with id: 1 2023-12-12 20:31:56.928 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: task[1] current need fetching block count 3 is not equal to no more stream block count 0 2023-12-12 20:31:57.139 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream sync success (1) block(0) syncLength(5290874) currentOffset(5290874) 2023-12-12 20:31:57.140 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream sync success (1) block(1) syncLength(7043955) currentOffset(7043955) 2023-12-12 20:31:57.141 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream sync success (1) block(2) syncLength(11660111) currentOffset(11664207) 2023-12-12 20:31:57.831 17274-17391/com.liulishuo.okdownload.sample D/MultiPointOutputStream: task[1] current need fetching block count 3 is not equal to no more stream block count 1 2023-12-12 20:31:57.831 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: task[1] current need fetching block count 3 is not equal to no more stream block count 1 2023-12-12 20:31:57.831 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: runSync state change isNoMoreStream[false] newNoMoreStreamBlockList[[2]] 2023-12-12 20:31:57.845 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream sync success (1) block(0) syncLength(3244032) currentOffset(8534906) 2023-12-12 20:31:57.845 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream sync success (1) block(1) syncLength(2228224) currentOffset(9272179) 2023-12-12 20:31:57.846 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream sync success (1) block(2) syncLength(3000461) currentOffset(14664668) 2023-12-12 20:31:57.846 17274-17391/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream close task[1] block[2] 2023-12-12 20:31:57.846 17274-17391/com.liulishuo.okdownload.sample D/CallbackDispatcher: fetchEnd: 1 2023-12-12 20:31:57.847 17274-17404/com.liulishuo.okdownload.sample D/DownloadChain: release connection com.liulishuo.okdownload.core.connection.DownloadOkHttp3Connection@94b4a61 task[1] block[2] 2023-12-12 20:31:58.729 17274-17389/com.liulishuo.okdownload.sample D/MultiPointOutputStream: task[1] current need fetching block count 3 is not equal to no more stream block count 2 2023-12-12 20:31:58.730 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: task[1] current need fetching block count 3 is not equal to no more stream block count 2 2023-12-12 20:31:58.730 17274-17392/com.liulishuo.okdownload.sample D/MultiPointOutputStream: runSync state change isNoMoreStream[false] newNoMoreStreamBlockList[[0]] 2023-12-12 20:31:58.840 17274-17390/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream done but no need to ensure sync, because the syncFuture.isDone[true] task[1] block[1] 2023-12-12 20:31:58.841 17274-17390/com.liulishuo.okdownload.sample D/MultiPointOutputStream: OutputStream close task[1] block[1] 2023-12-12 20:31:58.841 17274-17390/com.liulishuo.okdownload.sample D/DownloadCache: catch unknown error java.io.IOException: The current offset on block-info isn't update correct, 9272179 != 14664668 on 1 2023-12-12 20:31:58.842 17274-17404/com.liulishuo.okdownload.sample D/DownloadChain: release connection com.liulishuo.okdownload.core.connection.DownloadOkHttp3Connection@dbe6986 task[1] block[1]

shijia109 commented 6 months ago

进度条到头后会报error,说什么长度不一致,再进来重新下载,进度条会回退一部分然后再前进,概率性会complete,大多数情况下会error,或进度到头后无任何反应

shijia109 commented 6 months ago

经测试,api到29就无法正常工作,而demo的api是28,但是现在应用商店硬性要求api必须30或以上,这就非常麻烦了,换框架成本太高,作者能关注下这个问题吗?这么好的东西就因为适配问题无法被人使用,太可惜了

shijia109 commented 6 months ago

自己改的代码,解决了,为啥不直接改了呢?我看21年还有提交,20年就有人反馈这个问题而且还有方案了

Cancrileo commented 6 months ago

怎么改的 求解

自己改的代码,解决了,为啥不直接改了呢?我看21年还有提交,20年就有人反馈这个问题而且还有方案了

gumaola commented 6 months ago

库的原作者已经重新fork并更新了所有sdk,贡献度第一的就是

shijia109 commented 6 months ago

怎么改的 求解

自己改的代码,解决了,为啥不直接改了呢?我看21年还有提交,20年就有人反馈这个问题而且还有方案了

MultiPointOutputStream这个类的close方法 outputStreamMap.remove(blockIndex)之后在加一行noSyncLengthMap.remove(blockIndex);

tianshaokai commented 5 months ago

@Cancrileo https://github.com/tianshaokai/okdownload 我已经改了,里边改了两个地方

shijia109 commented 5 months ago

库的原作者已经重新fork并更新了所有sdk,贡献度第一的就是

下载下来了,但是项目跑不起来,各种莫名其妙报错,解决一个又出另一个,总之无法编译,不知道差哪了

tianshaokai commented 5 months ago

@shijia109 可以看看我的代码 https://github.com/tianshaokai/okdownload ,改成 了 androidx

shijia109 commented 5 months ago

@shijia109 可以看看我的代码 https://github.com/tianshaokai/okdownload ,改成 了 androidx

感谢

IBraveBegins commented 1 month ago

@Cancrileo https://github.com/tianshaokai/okdownload 我已经改了,里边改了两个地方 用的时候,是不是只能把你改过的代码拷贝到项目里。

tianshaokai commented 1 month ago

@IBraveBegins 好问题,我这几天 传一个新版本的 maven 地址

IBraveBegins commented 1 month ago

@IBraveBegins 好问题,我这几天 传一个新版本的 maven 地址

期待,加油!到时候@一下

IBraveBegins commented 1 month ago

@IBraveBegins 好问题,我这几天 传一个新版本的 maven 地址

我这边把你改过的代码都复制到我的项目了,我下载单个apk,强制杀死app以后,从新进来。没从断点处开始下载

tianshaokai commented 1 month ago

@IBraveBegins 嗯,我这个这几天看一下 优化看看

IBraveBegins commented 1 month ago

@IBraveBegins 嗯,我这个这几天看一下 优化看看 感谢大佬的贡献,排查了一下,复制的代码,把你代码里用到utils类用到反射的地方,替换成自己的包名就行了。

IBraveBegins commented 1 month ago

@IBraveBegins 嗯,我这个这几天看一下 优化看看 感谢大佬的贡献,排查了一下,复制的代码,把你代码里用到utils类用到反射的地方,替换成自己的包名就行了。

IBraveBegins commented 1 month ago

@IBraveBegins 嗯,我这个这几天看一下 优化看看 感谢大佬的贡献,排查了一下,复制的代码,把你代码里用到utils类用到反射的地方,替换成自己的包名就行了。

tianshaokai commented 1 month ago

@IBraveBegins 你是怎么操作的,我试了一下没有复现出来, 麻烦录制一个视频我看看 如何复现的 ,通过邮件 businesskai@163.com 发给我吧

IBraveBegins commented 1 week ago

@IBraveBegins 你是怎么操作的,我试了一下没有复现出来, 麻烦录制一个视频我看看 如何复现的 ,通过邮件 businesskai@163.com 发给我吧 之前的问题,是我复制代码没改好出现的错误。

IBraveBegins commented 1 week ago

@IBraveBegins 你是怎么操作的,我试了一下没有复现出来, 麻烦录制一个视频我看看 如何复现的 ,通过邮件 businesskai@163.com 发给我吧

这个库可以知道切换了网络了吗?我现在有个问题,下载的时候,wifi和手机网络都开着,然后我把wifi关掉,下载就暂停,不会继续下载了。切换网络,任务不会重试。这种情况有对外的回调的方法通知吗

tianshaokai commented 1 week ago

@IBraveBegins 加我qq 1575640686 交流吧,你遇到的问题详细说一下