如何在Kotlin Multiplatform模块中跨平台共享资源文件?
KMM跨平台共享单个JSON文件的轻量方案
实现步骤
1. 统一存放文件
把你的JSON文件放到KMM模块的src/commonMain/resources目录下(没有该文件夹就新建一个)。
2. 配置Android端打包
在模块的build.gradle.kts的Android配置块里,添加资源目录映射:
android { sourceSets["main"].apply { resources.srcDir("src/commonMain/resources") } }
Android端访问时,直接用context.resources.openRawResource(R.raw.your_file_name)(注意把JSON放在commonMain/resources/raw子目录下,或者调整路径匹配Android资源规则)。
3. 配置iOS端打包
在build.gradle.kts的各iOS目标配置中,添加资源目录:
listOf(iosX64, iosArm64, iosSimulatorArm64).forEach { target -> target.binaries.framework { resources.srcDir("src/commonMain/resources") } }
iOS端通过Bundle.main.url(forResource: "your_file_name", withExtension: "json")即可获取文件路径。
验证打包结果
- Android:构建后检查
build/intermediates/resources/main目录,确认JSON文件已存在。 - iOS:生成Framework后,右键「显示包内容」,查看
Resources目录是否包含目标文件。
内容的提问来源于stack exchange,提问作者rimes
相关产品推荐
相关产品推荐

