IT

빌드 타임 PNG 생성에서 다른 리소스에 대한 참조는 지원되지 않습니다.

lottoking 2020. 7. 23. 07:59
반응형

빌드 타임 PNG 생성에서 다른 리소스에 대한 참조는 지원되지 않습니다.


AndroidStudio 3.0 / Android Gradle 플러그인 3.0

<vector>
  <path android:fillColor="@color/image_button_disabled"/>
</vector>

이 오류가 발생합니다.

빌드 타임 PNG 생성에서 다른 리소스에 대한 참조는 지원되지 않습니다.

문제를 어디에 있습니까? 더 이상 사용되지 않는 솔루션입니까?


build.gradle에서 다음 줄을 추가하십시오.

defaultConfig{
   vectorDrawables.useSupportLibrary = true
}

자세한 내용은 Android 개발자 : 벡터 드로어 블 이전 버전과의 자세한 솔루션 을 참조하십시오.


16 진 코드를 직접 참조하지 않습니다.

<vector
  <path
    android:fillColor="#FFF"/></vector>

이 오류에 대한 복잡가 조금 더 있습니다.

  • Android 5.0 (API 레벨 21)은 공식적으로 벡터 드로어 블을 지원하는 첫 번째 버전입니다.
  • minSdkVersion을 20 미만으로 사용하면 벡터 드로어 블에 대한 두 가지 솔루션이 있습니다.
    • Android Studio의 Vector Asset Studio는 PNG를 생성합니다. 안드로이드 스튜디오를 문서 살펴보십시오 . 그러나 다른 리소스에 대한 참조는 빌드 시간 PNG 생성에서 지원되지 않습니다.
    • 지원 라이브러리 사용
  • 또는 minSdkVersion에 21 이상을 사용하십시오.

지원 라이브러리의 경우 build.gradle 파일에 명령문을 추가하십시오.

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  compile 'com.android.support:appcompat-v7:23.2.0'
}


minSdkVersion이 21 인 경우 다음 줄을 추가하여 PNG 생성을 추가 할 수 있습니다.

// set to an empty list to disable the feature
vectorDrawables.generatedDensities = [] 

이 줄을 제거하면 여전히 PNG가 생성됩니다.

출처 : http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html


벡터 드로어 블의 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"/>

이 대신

<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"/>


다음을 수행하여 문제를 해결합니다.

  1. drawable-v21 폴더를 만들고 거기에 변수를 사용하는 모든 드로어 블 xml을 복사하십시오.
  2. 원래 드로어 블 폴더에서 모든 아이콘을 정적 색상을 사용하도록 변경하십시오.

이렇게하면 컴파일러가 작동합니다.


android:fillColor="@color/image_button_disabled"벡터 드로어 블에이 코드를 사용 하고 있다고 생각합니다 .

// 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>

지원되지 않습니다.

그냥 교체하십시오 android:fillColor="#c4ca5e"


@ mwa91 답변 까지 추가하려면 .

드로어 블의 동적 테마가 필요하지만 레이아웃을 업데이트하고 @ mwa91 응답으로 이동하여 모든 android:src="@drawable/..."속성을로 변경할 시간이없는 경우 app:srcCompat="@drawable/..."항상 드로어 블에서 16 진수 색상 값을 사용한 다음 나중에 ImageView에서 드로어 블에 색조를 지정할 수 있습니다.

<ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/your_drawable"
      android:tint="@color/image_button_disabled"
      />

참고 URL : https://stackoverflow.com/questions/46978566/references-to-other-resources-are-not-supported-by-build-time-png-generation

반응형