You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin开发Android时Webview加载assets HTML报ERR_FILE_NOT_FOUND如何解决

问题根因

file:///android_asset/是Android系统约定的APK内置assets资源访问路径,该路径报错仅说明打包后APK内不存在对应路径的文件,或路径配置存在规则性错误。你尝试使用的./src/main/assets/路径属于开发PC的本地项目路径,APK安装到设备后不存在该目录结构,仅调试阶段模拟器可能因本地调试映射临时生效,完全不符合生产环境要求,必须弃用。

分步排查方案
  • 第一步:确认assets目录位置正确
    默认配置下assets目录必须放在src/main/路径下,与java/、res/目录平级,禁止放到res/或其他子目录内。如果是多模块项目,需确认html文件放在主模块的assets目录,或依赖模块的assets配置已正确导入主模块。

  • 第二步:核对路径大小写完全匹配
    Android assets路径严格区分大小写,需确认:

    • 目录名Content/的大小写和代码中拼写完全一致,是否实际为小写content/
    • 文件名call.html的大小写和代码中拼写完全一致,是否存在大写后缀.HTML或文件名拼写错误
      即使将文件放到assets根目录,也需确认代码中加载的file:///android_asset/call.html和实际文件名大小写完全匹配。
  • 第三步:检查打包配置是否排除了assets资源
    打开Module级build.gradle文件,检查是否存在误排除assets的配置:

// 错误配置示例,会导致assets文件被过滤
aaptOptions {
    ignoreAssetsPattern "!*.html" // 禁止html文件打入assets
    ignoreAssetsPattern "!Content/" // 禁止Content目录打入assets
}

如果开启了资源压缩,添加保留assets的配置:

android {
    buildTypes {
        release {
            shrinkResources true
            // 可在res/raw/keep.xml添加规则保留所有assets文件
        }
    }
}

配置完成后执行clean再rebuild项目,打debug包后解压APK,检查assets/目录下是否存在对应文件,确认文件已正常打入APK。

  • 第四步:确认WebView基础配置正确
    加载页面之前添加必要的WebView配置:
webView.apply {
    settings.javaScriptEnabled = true // 调用JS必须开启
    settings.allowFileAccess = true
    webChromeClient = WebChromeClient() // 视频通话功能必须配置WebChromeClient
}
// 加载正确路径
val filePath = "file:///android_asset/Content/call.html"
webView.loadUrl(filePath)

内容的提问来源于stack exchange,提问作者Mauricio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 07:24:03