更新支持库23.2.0生成错误修复。

17

我已将支持库更新到23.2.0版本。自从更新后,在构建时出现以下错误:

\app\build\intermediates\data-binding-layout-out\debug\values-v11\values-v11.xml Error:(67,54) No resource found that matches the given name (at 'android:actionModeCloseDrawable' with value '@drawable/abc_ic_ab_back_mtrl_am_alpha')。

你是否遇到过此问题?

10个回答

26

它被几次重新命名:目前从版本24.0.0开始它的

R.drawable.abc_ic_ab_back_material

之前的版本:

23.2.1 R.drawable.abc_ic_ab_back_mtrl_am_alpha
23.2.0 R.drawable.abc_ic_ab_back_material


它可以工作,只需将abc_ic_ab_back_mtrl_am_alpha更改为abc_ic_ab_back_material。 - Lorensius W. L. T
只需在您的 build.gradle 文件中使用它:def supportV = "23.2.1" compile "com.android.support:appcompat-v7:$supportV" - Paul Woitaschek
这里缺少了abc_ic_menu_share_mtrl_alpha,它在23.3.0版本中。 - JPM
2
在v24中,它被称为@drawable/abc_ic_ab_back_material,但是lint警告它具有私有访问权限(无论这意味着什么)。 - Patrick
@ for3st:“private access”表示只有库应该使用它。如果您想使用它,请将其复制并粘贴到您的项目中。 - A.D.
那么当它仅位于构建文件中时,如何更改它呢? - Atieh

10

该资源已被移除。请参见:https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88

设置此标志应有所帮助:

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

如果您还没有进行更新,并且正在使用 v1.5.0 或更低版本的 Gradle 插件,则需要将以下内容添加到您的应用程序的 build.gradle 文件中:
android {
  defaultConfig {
    // Stops the Gradle plugin’s automatic rasterization of vectors
    generatedDensities = []
  }
  // Flag to tell aapt to keep the attribute ids around
  aaptOptions {
    additionalParameters "--no-version-vectors"
  }
}

2
这些指令有相同的错误。 - Flofloaud1034

3

将你的项目添加到代码库中:res/drawable,新建矢量数据abc_ic_ab_back_mtrl_am_alpha

进入图像描述


3
我认为Google从Android支持库23.2开始将Drawable转换为Vector Drawable,因为它提供了向后兼容的支持。为此,他们删除了Android支持库23.2中的@drawable/abc_ic_ab_back_mtrl_am_alpha,并添加了一个名为R.drawable.abc_ic_ab_back_material的矢量可绘制对象。
解决方案: 添加对矢量可绘制对象的支持。
// Gradle Plugin 2.0+  
android {
defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}
// Gradle Plugin 1.5  


android {  
   defaultConfig {  
     generatedDensities = []  
  }  

  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 } 

abc_ic_ab_back_mtrl_am_alpha 替换为 abc_ic_ab_back_material

相关链接:

http://android-developers.blogspot.co.uk/2016/02/android-support-library-232.html

https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&groupby=&sort=&id=201835

https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88#.uws2k5j4j


你如何替换它?它位于v11构建文件中。 - Atieh

1

1
当我使用最新的Material Dialogs (0.8.5.6)和最新的Support Library (23.2)时,遇到了同样的问题。将Material Dialogs 0.8.5.1与Support Library 23.1.1还原可在Android 4上工作。
Material Dialog的GitHub上有关于该Bug的报告: https://github.com/afollestad/material-dialogs/issues/983

1

检查是否有任何第三方库出现了这个错误,我不得不更新affolestad材料对话框的版本。


1

我通过严格声明之前的AppCompat来解决了这个错误:

compile 'com.android.support:appcompat-v7:23.1'

我也做了这个,但问题仍然存在。 - Flofloaud1034

0

遇到了同样的 bug,在我的情况下问题出在第三方库上,我没有更新它到与我的项目依赖相同的 app-compat 版本。

所以尝试更新其他使用 app-compat 作为依赖项的库。


0

我曾经使用支持库23.2.0,构建工具版本为23.0.2和类路径com.android.tools.build:gradle:1.5.0遇到了同样的问题。所以,我通过更改gradle-wrapper.properties文件中的distributionUrl解决了这个问题,从 https://services.gradle.org/distributions/gradle-2.2.1-all.zip 变更成 https://services.gradle.org/distributions/gradle-2.14.1-all.zip


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接