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

升级AGP 3.1.0后Gradle Plugin Lint格式化字符串资源报错

解决AGP 3.1.0升级后Lint的StringFormatMatches错误

这个问题是因为AGP 3.1.0对字符串格式化的类型检查规则变得更严格了。你的字符串资源amount_format使用了%1$.2f格式符,它预期接收的是Double类型参数,但你传入的TagAndTotal.total是Float类型,Lint现在会把这种类型不匹配(虽然运行时能正常工作)判定为错误。

下面是几种可行的解决办法:

  • 修改数据类的类型为Double
    直接把TagAndTotal里的total字段类型从Float改成Double,这样和格式化符的预期类型完全匹配,从根源解决问题:

    data class TagAndTotal(
        @ColumnInfo(name = "tag_name") var tagName: String,
        @ColumnInfo(name = "total") var total: Double
    )
    
  • 显式转换Float为Double再传入
    如果不想改动数据类的字段类型,可以在调用格式化方法的时候,把Float值转成Double:

    val formattedAmount = applicationContext.getString(R.string.amount_format, tagAndTotal.total.toDouble())
    
  • 忽略该Lint检查
    如果你确认这种类型不匹配不会影响运行,也可以针对性地忽略这个Lint错误:

    • 单个代码处忽略:用@Suppress注解标记
      @Suppress("StringFormatMatches")
      val formattedAmount = applicationContext.getString(R.string.amount_format, tagAndTotal.total)
      
    • 全局忽略:在项目的lint.xml文件中添加规则
      <?xml version="1.0" encoding="UTF-8"?>
      <lint>
          <issue id="StringFormatMatches" severity="ignore" />
      </lint>
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:23:09