Bug Android 提供本地文件 net::ERR_FAILED

Bug Android serving local files net::ERR_FAILED

提问人:brospars 提问时间:10/27/2022 更新时间:10/27/2022 访问量:658

问:

作为移动应用程序开发的一部分,我们在 Android WebView 中遇到了本地视频播放问题。

技术栈:

  • 离子/角度
  • 电容器(本机运行时充当 webview 和本机代码之间的接口)
  • Java的 Android

访问以前下载的本地视频文件时,随机出现此问题。

电容器通过本地服务器为手机的本地文件提供服务,以绕过协议的 webview 限制。为此,它会捕获带有前缀的请求,并返回一个 (Java Android),其中包含一个 但是,有时 webview 收到的响应是这样的:file://_capacitor_fileWebResourceResponseFileInputStream

GET http://localhost/_capacitor_file_/data/user/0/io.ionic.starter/files/videoXYZ.mp4 net::ERR_FAILED

Java 中没有发出可以清楚地识别错误来源的错误。

电容器来源 : https://github.com/ionic-team/capacitor/blob/main/android/capacitor/src/main/java/com/getcapacitor/WebViewLocalServer.javaWebViewLocalServer

引起我注意的另一点是,在视频出现错误的情况下,返回的请求(就在使用 Android Studio 调试器失败之前)包含看似错误的标头:

// Range seems wrong : 1055736-1055735 =\> video bug
{Accept-Ranges=bytes, Cache-Control=no-cache, Content-Range=bytes 1055736-1055735/1055736}
// Range is correct : 0-1589247 =\> video works
{Accept-Ranges=bytes, Cache-Control=no-cache, Content-Range=bytes 0-1589247/1589248}

我在 Capacitor 存储库上打开了一个问题:https://github.com/ionic-team/capacitor/issues/6021 但我不确定它是否有问题。

相反,使用 Android Studio 调试器,我认为它可能与 Chomium Webview 有关,因为我看到响应被发送回这个函数:https://github.com/chromium/chromium/blob/main/components/embedder_support/android/java/src/org/chromium/components/embedder_support/util/InputStreamUtil.java#L42 这将解释为什么我没有看到任何 Java 错误......@CalledByNative

这远远超出了我的技能,这就是为什么我需要你的帮助。

重现错误的基本应用程序:https://github.com/brospars/bugvid

Android Ionic-Framework WebView 电容器

评论

0赞 blackapps 10/27/2022
the response received by the webview is this: GET http://localhost/_capacitor_file_/data/user/0/io.ionic.starter/files/videoXYZ.mp4 net::ERR_FAILED收到?快速浏览了一下 github 源代码,但我没有看到“错误失败”。Webview 将检测到错误,然后生成此消息。但是服务器上出现了哪个错误。.如果服务器上有一个?
0赞 brospars 10/27/2022
没有“服务器”,因为它是本地视频,在 Java/js 端没有错误
0赞 blackapps 10/27/2022
没有服务器?Capacitor serves local files of the phone via a local server ..
0赞 brospars 10/27/2022
一个本地服务器,是的,基于 Chromium WebView 请求拦截器用 Java 编写,我只是想明确它不是像 Apache 这样的 Web 服务器。
0赞 blackapps 10/28/2022
你最好弄清楚这个ERR_FAILED来自哪里,因为谈论成为网络服务器是或否不会给你带来任何好处。

答: 暂无答案