Android: использование SVG в res приводит к ошибке: "имя файла должно заканчиваться.xml или.формат PNG"

Я только что обновил Android Studio 1.2.1.1, и теперь gradle получил проблемы с svg в моей папке ресурсов. Я всегда использовал SVGs без проблем, и я надеюсь, что они будут "разрешены" в будущем.

:app:mergeDebugResources
:app:mergeDebugResources FAILED
/home/petergriffin/folder1/another-app/MyAwesome-App/app/src/main/res/drawable-hdpi/logo.svg
Error:Error: The file name must end with .xml or .png
Error:Execution failed for task ':app:mergeDebugResources'.
> /home/petergriffin/folder1/another-app/MyAwesome-App/app/src/main/res/drawable-hdpi/logo.svg: Error: The file name must end with .xml or .png
Information:BUILD FAILED

есть идеи как решить это ?

5 ответов


та же проблема с файлами webp в каталоге drawable resource.

последний плагин gradle (v1.2.3)не распознает некоторые форматы изображений, которые раньше работали. У меня нет проблемы, когда я переключаюсь обратно на v1.2.2

обновление: учитывая, что эта функция была исправлена, вы должны обновить до последней версии плагина gradle вместо возврата назад.

вы можете изменить версию в сборке.Gradle в по настройка:

buildscript {

  repositories {
      jcenter()
      mavenCentral()
      // mavenLocal() // Only if you want to use your local maven repo
  }

  dependencies {
      // classpath 'com.android.tools.build:gradle:+'
      classpath 'com.android.tools.build:gradle:1.2.2'
  }
}

SVG файлы не поддерживаются Android как drawables. Даже если вы поместите их туда, система не сможет расшифровать их, как вы ожидали. Вместо этого попробуйте поместить их в src/main/res/raw или src/main/assets папка и загрузите их соответствующим образом (через внешнюю библиотеку). Большинство людей путают SVG и векторные чертежи, это не одно и то же. Векторные чертежи используют SVG-совместимый мини-язык пути, но это все.

нынешнее принято решение вернуться к архаичной версии Gradle плагин, который является контрпродуктивным в большинстве случаев. Команда инструментов вкладывает много усилий в то, чтобы сделать сборку намного лучше (это действительно заметно).

вместо возврата вы должны тянуть вперед до 1.5.0 (уже некоторое время стабильно) и добавить android.disableResourceValidation=true в своем gradle.properties файл (обычно находится в корневом проекте рядом с settings.gradle), чтобы включить поведение pre-1.2.2.

подробнее:http://b.android.com/192493


В Android вы должны использовать (XML) векторные файлы для рисования (они содержат информацию SVG внутри XML, детали:https://developer.android.com/training/material/drawables.html#VectorDrawables).

векторные чертежи можно скачать из этого репозитория:https://github.com/google/material-design-icons. Ищите папки под названием drawable-anydpi-v21 в каталогах значок. Эта папка включает вектор Drawable файлы, которые будут размещены в каталоге drawable вашего приложения.

обратите внимание, что работа с векторными Drawable файлами поддерживается только для Android 5.0 и выше. В случае, если вам нужно быть совместимым с https://github.com/trello/victor Эта библиотека может использоваться для преобразования SVG-файлов в drawables в разных форматах во время компиляции вашего приложения. Что избавляет вас от необходимости создавать и поддерживать с mdpi/ипчр/xhdpi/красный папки вручную.

в случае, если вы называете векторные файлы и файлы SVG одинаково, вы можете использовать оба подхода рядом друг с другом.


проблема по-прежнему остается на gradle 1.5. Похоже, что единственный вариант в будущем-конвертировать svg-файлы в xml с помощью "создать векторный актив", а затем выбрать опцию svg-файла.


существует проблема в Android studio 1.5.1 при использовании build:gradle: 1.5.0.пожалуйста, дайте решение. Я только что обновил Android Studio 1.5.1, и теперь gradle получил проблемы с svg в моей папке ресурсов. Я всегда использовал SVGs без проблем, и я надеюсь, что они будут "разрешены" в будущем.