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

Android修改dimen资源后appcompat、drawerlayout报Invalid <dimen>错误

问题描述

修改项目部分dimen尺寸值、精简layout和layout-sw600目录下的冗余布局后,出现资源合并报错,回滚所有修改后问题仍然存在。

报错日志

C:\Users\ImMor\.gradle\caches\transforms-3\fe034c7b18d2d573771961079df9a508\transformed\appcompat-1.3.1\res\values\values.xml:69:4: Invalid <dimen> for given resource value.
C:\Users\ImMor\.gradle\caches\transforms-3\ad020443805f3b97590f2a6c038942e6\transformed\drawerlayout-1.1.1\res\values\values.xml:4:4: Invalid <dimen> for given resource value.

> Task :app:mergeDebugResources FAILED
Execution failed for task ':app:mergeDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.ResourceCompilerRunnable
   > Resource compilation failed. Check logs for details.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.ResourceCompilerRunnable
   > Resource compilation failed. Check logs for details.

相关配置文件

默认dimen配置

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- font size -->
    <dimen name="font_text_headline_largest">36sp</dimen>
    <dimen name="font_text_headline_large">20sp</dimen>
    <dimen name="font_text_headline">18sp</dimen>

    <dimen name="font_text_large">16sp</dimen>
    <dimen name="font_text_normal">14sp</dimen>
    <dimen name="font_text_small">13sp</dimen>
    <dimen name="font_text_smallest">12sp</dimen>
    <!-- -->

    <!-- spacing -->
    <dimen name="wrapContent">0dp</dimen>
    <dimen name="spacing_small">4dp</dimen>
    <dimen name="spacing_normal">8dp</dimen>
    <dimen name="spacing_large">16dp</dimen>
    <dimen name="spacing_largest">24dp</dimen>
    <!-- -->

    <!-- view: Cardview -->
    <dimen name="cv_corner_radius">4dp</dimen>
    <dimen name="cv_corner_radius_large">8dp</dimen>
    <dimen name="cv_elevation">4dp</dimen>

    <dimen name="cv_home_width">0.30</dimen>
    <dimen name="cv_home_height">0.38</dimen>

    <dimen name="cv_service_flow_width">0.35</dimen>
    <dimen name="cv_service_flow_width_large">0.38</dimen>

    <dimen name="cv_service_message_height">200dp</dimen>
    <dimen name="cv_service_message_height_large">230dp</dimen>

    <dimen name="cv_service_option_height">225dp</dimen>

    <dimen name="cv_logged_in_out_height">0.17</dimen>
    <dimen name="cv_logged_in_out_width">0.35</dimen>

    <dimen name="cv_logout_height">0.15</dimen>
    <!-- -->

    <!-- view: Imageview -->
    <dimen name="iv_home_width">0.80</dimen>
    <dimen name="iv_home_width_small">0.75</dimen>

    <dimen name="iv_home_height">0.32</dimen>
    <dimen name="iv_home_height_small">0.30</dimen>

    <dimen name="iv_logo_width">190dp</dimen>

    <dimen name="iv_service">50dp</dimen>

    <dimen name="iv_drawable_height">12dp</dimen>
    <dimen name="iv_drawable_width">12dp</dimen>

    <dimen name="iv_shop_height">0.50</dimen>
    <!-- -->

    <!-- view: Button -->
    <dimen name="btn_default_height">56dp</dimen>
    <dimen name="btn_default_background_height">88dp</dimen>
    <dimen name="btn_default_background_height_large">120dp</dimen>

    <dimen name="btn_login_external_width">0.28</dimen>
    <dimen name="btn_login_external_height">40dp</dimen>
    <!-- -->

    <!-- view: Textview -->
    <dimen name="tv_dropdown_height">54dp</dimen>
    <!-- -->

    <!-- view: Progressbar -->
    <dimen name="def">wrap_content</dimen>
    <dimen name="abc">wrap_content</dimen>
    <!-- -->

    <!-- view: Layout -->
    <dimen name="cl_shop_item_description">56dp</dimen>
    <!-- -->
</resources>

sw600维度dimen配置

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- font size -->
    <dimen name="font_text_headline_largest">40sp</dimen>
    <dimen name="font_text_headline_large">24sp</dimen>
    <dimen name="font_text_headline">22sp</dimen>

    <dimen name="font_text_large">20sp</dimen>
    <dimen name="font_text_normal">18sp</dimen>
    <dimen name="font_text_small">17sp</dimen>
    <dimen name="font_text_smallest">16sp</dimen>
    <!-- -->

    <!-- spacing -->
    <dimen name="spacing_normal">16dp</dimen>
    <!-- -->

    <!-- view: Cardview -->
    <dimen name="cv_home_width">0.28</dimen>
    <dimen name="cv_home_height">0.32</dimen>

    <dimen name="cv_service_flow_width">0.30</dimen>
    <dimen name="cv_service_message_height">265dp</dimen>
    <dimen name="cv_service_option_height">265dp</dimen>
    <!-- -->

    <!-- view: Imageview -->
    <dimen name="iv_logo_width">250dp</dimen>
    <dimen name="iv_shop_height">0.6</dimen>

    <dimen name="iv_service">100dp</dimen>

    <dimen name="iv_drawable_height">24dp</dimen>
    <dimen name="iv_drawable_width">24dp</dimen>
    <!-- -->

    <!-- view: Button -->
    <dimen name="btn_default_height">72dp</dimen>
    <dimen name="btn_default_background_height">124dp</dimen>
    <dimen name="btn_default_background_height_large">160dp</dimen>

    <dimen name="btn_login_external_height">60dp</dimen>
    <!-- -->

    <!-- view: Textview -->
    <dimen name="tv_dropdown_height">60dp</dimen>
    <!-- -->

    <!-- view: Progressbar -->
    <dimen name="def">75dp</dimen>
    <dimen name="abc">24dp</dimen>
    <!-- -->

    <!-- view: Layout -->
    <dimen name="cl_shop_item_description">72dp</dimen>
    <!-- -->
</resources>

报错指向的无效资源

appcompat相关

<color name="tooltip_background_light">#e6FFFFFF</color>

drawerlayout相关

<attr format="dimension" name="elevation"/>

补充说明

类似cv_home_width、cv_service_flow_width这类纯数值的dimen不是缺少dp单位,它们是用于app:layout_constraintHeight_percent属性的参数。

排查解决步骤

  1. 修正dimen中的非法值
    默认dimen中定义的<dimen name="def">wrap_content</dimen>和<dimen name="abc">wrap_content</dimen>属于非法配置:dimen类型资源只能存放带单位的数值,wrap_content是布局属性的枚举值,不能放到dimen中定义,直接删除这两个配置即可。
  2. 修正无单位百分比值的资源类型
    所有用于百分比布局属性的纯小数值,不能用dimen类型定义,dimen要求必须附带单位,否则会被判定为无效资源。将这类配置改为float类型即可:
<!-- 错误写法 -->
<dimen name="cv_home_width">0.30</dimen>
<!-- 正确写法 -->
<item name="cv_home_width" type="float">0.30</item>

使用时对应调整引用为@float/cv_home_width即可正常传给百分比属性。
3. 清理缓存重新构建
执行以下操作清理所有缓存,避免历史错误缓存影响构建:

  • 执行项目清理命令:./gradlew clean
  • 删除本地gradle缓存目录下对应transforms缓存(也就是报错里指向的.gradle/caches/transforms-3目录内容)
  • 重新执行构建操作
  1. 额外校验
    检查所有dimen配置是否存在其他格式错误,比如单位拼写错误、数值格式异常等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:42:02