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

多模块Android项目数据文件放置位置及读取方案咨询

问题解决:Android多模块项目中资源文件读取失败

问题原因

测试阶段能读取到proverbs.json是因为JVM测试环境会将resources目录下的文件输出到本地文件系统,通过ClassLoader.getResource().path可以拿到真实文件路径;但Android应用打包后,resources目录下的文件会被打包进APK,并非独立的文件系统文件,此时通过File类读取必然抛出FileNotFoundException。

解决方案

不需要移动文件位置(保持在general模块的src/main/resources目录即可),只需要修改资源读取方式,改用输入流读取:

修改getJsonResponse函数为:

private fun getJsonResponse(filepath: String): String {
    return javaClass.classLoader?.getResourceAsStream(filepath)?.use { inputStream ->
        inputStream.bufferedReader().readText()
    } ?: ""
}

补充方案(若需依赖Android Asset系统)

如果你的general模块是Android Library,也可以将proverbs.json放到模块的src/main/assets目录下,通过Context的assets.open()方法读取,但这种方式需要Repository持有Context,会增加耦合度,不如第一种方案通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:04:56