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 без проблем, и я надеюсь, что они будут "разрешены" в будущем.