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

Android Studio中SVG文件data-name属性报错,如何保留属性解决问题?

解决Android Studio中SVG含data-name属性报错的方案

以下几种方法可以在保留data-name属性的前提下解决报错问题:

方法1:使用第三方SVG渲染库绕过AAPT检查

Android Studio内置的AAPT工具对SVG属性的支持有限,改用第三方库直接加载SVG可避免这个问题:

  • 在app模块的build.gradle(或build.gradle.kts)中添加依赖:
    implementation 'com.caverock:androidsvg:1.4'
    
  • 将SVG文件从drawable目录移至src/main/assets目录
  • 在代码中通过库加载并显示SVG:
    // Java示例
    SVG svg = SVG.getFromAsset(getAssets(), "icon_example.svg");
    Drawable drawable = new PictureDrawable(svg.renderToPicture());
    yourImageView.setImageDrawable(drawable);
    
    // Kotlin示例
    val svg = SVG.getFromAsset(assets, "icon_example.svg")
    val drawable = PictureDrawable(svg.renderToPicture())
    yourImageView.setImageDrawable(drawable)
    

方法2:用SVGO工具预处理SVG(保留data-name)

通过SVGO优化SVG,移除AAPT不兼容的属性但保留data-name:

  1. 安装SVGO:npm install -g svgo
  2. 创建配置文件svgo.config.js,设置保留data-name:
    module.exports = {
      plugins: [
        {
          name: 'preset-default',
          params: {
            overrides: {
              removeAttrs: { attrs: '(?!data-name)^(?!id|width|height|viewBox)^.*$' }
              // 保留data-name、id、宽高、viewBox等必要属性,移除其他可能触发错误的属性
            }
          }
        }
      ]
    };
    
  3. 批量处理SVG文件:
    svgo -f ./app/src/main/res/drawable -o ./app/src/main/res/drawable-processed --config=svgo.config.js
    
  4. 将处理后的SVG替换原文件即可。

方法3:升级Android Gradle Plugin(AGP)

部分旧版本AGP对SVG属性的兼容性较差,升级到最新稳定版可能自动解决data-name的报错问题:

  • 打开项目根目录的build.gradle(或build.gradle.kts),更新com.android.tools.build:gradle版本至最新稳定号,例如:
    dependencies {
      classpath 'com.android.tools.build:gradle:8.1.4'
    }
    
  • 同步Gradle项目后检查报错是否消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:00:54