개요
간단한 WebView Application을 개발하고, Material Design 사이트에서 아이콘을 내려받아 이를 적용하는 작업을 진행하고 있었습니다.
해당 사이트에서는 PNG 파일과 XML 파일을 내려받을 수 있는데, PNG 이미지 파일의 사이즈는 고정적이기 때문에 되도록 XML 파일을 통해 추가하려고 시도했습니다.
(요즘 PNG raw 파일보단 XML을 통해 해상도 파편화 이슈로부터 자유로워지려는 트렌드도 한몫했구요.)
그러던 중, 아래와 같은 오류를 경험하게 된 것이죠.
오류 발생
java.lang.RuntimeException:Error while processing /media/.../baseline_search_24.xml : Can't process attribute android:fillColor="@android:color/white": references to other resources are not supported by build-time PNG generation.
File was preprocessed as vector drawable support was added in Android 5.0 (API level 21)
See http://developer.android.com/tools/help/vector-asset-studio.html for details.
어떻게 해결해야할까요?
사용중인 Gradle 버전에 따라 각기 다르게 적용하면 됩니다.
1 | android { |
또는,
1 | android { |
모양으로 build.gradle 파일을 수정하면 됩니다.
왜 발생할까요?
PNG과 같은 비트맵 파일을 사용하면 해상도에 따라 모자이크처럼 보이거나, 또는 상당히 작고 흐릿한 이미지로 출력되는 큰 단점이 있습니다. 그래서 중요한 기능에 대한 버튼 및 레이아웃 구성들은 XML와 같은 Vector 파일을 주로 사용하고 있는 추세입니다.
그러나 Android 5.0 롤리팝 (API 21) 이하의 버전의 환경들 모두가, 반드시 Vector 방식의 drawables를 불러올 수 있는 것이 아니기 때문에 반드시 위와 같은 코드들을 입력해야합니다.