AndroidStudio 3.0 / Android Gradle plugin 3.0
<vector>
<path android:fillColor="@color/image_button_disabled"/>
</vector>
I get this error:
references to other resources are not supported by build-time PNG generation
Will it be possible to resolve it or is it a deprecated solution?
In your app build.gradle
add the following line:
defaultConfig{
vectorDrawables.useSupportLibrary = true
}
See Android Developers: Vector Drawables Backward Compatibility Solution for details.
you need to use the hex code directly not referring to a resource.
<vector
<path
android:fillColor="#FFF"/></vector>
Little bit more context for this error:
- Android 5.0 (API level 21) was the first version to officially support vector drawables.
- If you use minSdkVersion lower than 20, there are two solutions for vector drawable
- Android Studio's Vector Asset Studio generate PNG. Please take a look Android Studio document. But, references to other resources are not supported by build-time PNG generation.
- Use support library
- Or, use 21 or above for minSdkVersion
For support library, add a statement to your build.gradle file:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
compile 'com.android.support:appcompat-v7:23.2.0'
}
If your minSdkVersion is 21 you can disable the generation of PNG by adding this line:
// set to an empty list to disable the feature
vectorDrawables.generatedDensities = []
Removing this line will still generate the PNGs.
Source:
http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html
Do not use colorReference at fillColor attribute in Vector drawable just use hexa code
use like this
<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"/>
instead of this
<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"/>
I've been able to work around this by doing the following:
- create a drawable-v21 folder and copy all your drawable xmls that use variables there
- in the original drawable folder change all the icons to use a static color
This way the compiler will work
I think you are using android:fillColor="@color/image_button_disabled"
this code for vector drawable.
// image_button_disabled.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/circular_image_color_pressed" android:state_pressed="true" />
<item android:color="@color/circular_image_color_normal" />
</selector>
It's not supported.
Just replace it with android:fillColor="#c4ca5e"