生成签名APK时Google Map KmlLayer报错:无法找到符号
解决方案
1. 对齐资源命名与代码引用
- Android资源文件名仅支持小写字母、数字、下划线和点,不能有大写或特殊字符。先确认
res/raw下的KML文件实际命名(比如错误提示的kolkatapujamap.kml),然后把代码里的引用改为对应小写的R.raw.kolkatapujamap,确保文件名和代码引用完全一致。 - 如果你的KML文件名为
MapName.kml,必须先重命名为mapname.kml,再修改代码为R.raw.mapname。
2. 阻止签名打包时误删资源
签名APK默认开启资源收缩,可能会误删未被显式引用的KML文件。在模块级build.gradle中添加规则保留目标资源:
android { buildTypes { release { shrinkResources true // 保留raw目录下的目标KML文件 keepResources.add("raw/kolkatapujamap") } } }
如果不需要资源收缩,也可以直接将shrinkResources设为false,但建议用精准保留的方式优化包体积。
3. 修正R类引用
- 确保代码中导入的是你项目自身的
R类(比如com.yourpackagename.R),而非系统的android.R,后者无法识别自定义资源。 - 执行
Build -> Clean Project后再Build -> Rebuild Project,强制重新生成正确的R类,避免旧缓存导致的引用错误。
4. 验证文件状态
- 确认
res/raw目录下确实存在目标KML文件,且文件未损坏(可重新复制一次原文件到该目录)。 - 在Android Studio中右键该文件,查看
Properties,确认Resource Type为raw,未被标记为排除编译。
内容的提问来源于stack exchange,提问作者Utpal Datta
相关产品推荐
相关产品推荐

