构建时PNG生成不支持对其他资源的引用

lan*_*gme 117 resources android android-studio-3.0

AndroidStudio 3.0/Android Gradle插件3.0

<vector>
  <path android:fillColor="@color/image_button_disabled"/>
</vector>
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

构建时PNG生成不支持对其他资源的引用

是否有可能解决它或者它是一个弃用的解决方案?

mwa*_*a91 262

在您的应用中build.gradle添加以下行:

defaultConfig{
   vectorDrawables.useSupportLibrary = true
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Android开发者:Vector Drawables向后兼容性解决方案.

  • 但是为什么问题出现了,上面的解决方案是一个quickfix还是一个好策略? (4认同)

Ous*_*oua 12

您需要直接使用十六进制代码而不是引用资源.

<vector
  <path
    android:fillColor="#FFF"/></vector>
Run Code Online (Sandbox Code Playgroud)

  • 我也有同样的问题.为什么以前正常工作的功能会被禁用?这可能是个错误吗? (3认同)
  • 这是一个回归版本...如果你想改变颜色,你可以一项一项地改变...在颜色文件中引用并改变它更容易。 (2认同)
  • 这是一种解决方法,但“正确”的答案是@mwa91 的答案,将 `vectorDrawables.useSupportLibrary = true` 添加到您的 `build.gradle`。 (2认同)

Won*_*nil 8

这个错误的上下文多一点:

  • Android 5.0(API级别21)是第一个正式支持矢量绘图的版本.
  • 如果使用低于20的minSdkVersion,则有两个矢量drawable解决方案
    • Android Studio的Vector Asset Studio生成PNG.请查看Android Studio文档.但是,构建时PNG生成不支持对其他资源的引用.
    • 使用支持库
  • 或者,对于minSdkVersion使用21或更高版本

对于支持库,请在build.gradle文件中添加一条语句:

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  compile 'com.android.support:appcompat-v7:23.2.0'
}
Run Code Online (Sandbox Code Playgroud)

  • @MikeHanafey minSdkVersion 只有在您使用 android:filltype 时才必须为 24,有时 Android Vector Asset 会自动放入。只需摆脱它。 (5认同)

Sai*_*i N 5

不要在 Vector drawable 的 fillColor 属性处使用 colorReference 只使用六进制代码

像这样使用

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#1abc9c"
    android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>
Run Code Online (Sandbox Code Playgroud)

而不是这个

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="@color/colorPrimary"
    android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>
Run Code Online (Sandbox Code Playgroud)

  • 这是一个补丁,我希望能够在不复制所有可绘制对象的情况下重新设置我的应用程序的主题,而且它正在创建 png 而不是保留矢量。人们应该使用@mwa91 的解决方案。 (2认同)