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

Android Kotlin中Assets文件存在但列表为空、读取无内容求助

Android Assets目录文件读取失败排查方案

1. 核对Assets目录结构与命名

  • 确保目录路径为app/src/main/assets,目录名必须全小写为assets(不能是Assets/ASSETS),且直接隶属于main目录,不要嵌套在res或其他目录下。
  • 确认目标文件Injector.js位于assets根目录,若在子目录(如assets/scripts/),读取时需填写相对路径scripts/Injector.js,且调用assets.list("scripts")才能看到该目录下的文件。

2. 检查构建配置与缓存

  • 验证Module级build.gradle的sourceSets配置,确保Assets目录被正确识别(默认自动配置,手动修改过需核对):
    android {
        sourceSets {
            main {
                assets.srcDirs = ['src/main/assets']
            }
        }
    }
    
  • 执行清理重建:点击Build -> Clean Project,再Rebuild Project;极端情况可手动删除项目根目录下的build文件夹后重新构建,避免缓存导致资源未打包。

3. 确认文件是否被打包进APK

  • 将生成的APK文件解压,检查assets目录下是否存在Injector.js:
    • 若文件不存在,排查文件名是否包含特殊字符(空格、中文、特殊符号),建议改用英文小写+下划线命名(如injector.js)。
    • 若文件存在但仍读不到,检查APK是否为最新构建版本,避免安装了旧版本的APK。

4. 修正代码中的路径问题

  • Assets文件读取使用相对路径,不要以/开头:
    错误写法:assets.open("/Injector.js")
    正确写法:assets.open("Injector.js")
  • 添加异常捕获,定位具体错误:
    try {
        assets.open("Injector.js").bufferedReader().use {
            Log.d("Test", it.readText())
        }
    } catch (e: Exception) {
        Log.e("Test", "读取Assets文件失败", e)
    }
    
    通过日志中的异常信息(如FileNotFoundException)快速定位问题。

5. 调试环境排查

  • 切换Android Studio视图到Android模式,确认assets目录和文件的实际位置(Project视图可能显示虚拟目录结构,与实际打包逻辑不符)。
  • 真机测试时,卸载旧版APP后重新安装;模拟器测试可清除APP数据或重启模拟器,避免缓存干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:32:43