Invalid file path после добавления SVG файла в проект

Всем привет. У меня есть svg файл, который я добавляю, как существующий, в проект. Ниже его код:

 <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg width="21pt" height="21pt" viewBox="0 0 21 21" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <g id="#797979ff">
    <path fill="#797979" opacity="1.00" d=" M 20.48 0.00 L 21.00 0.00 L 21.00 20.48 C 20.87 20.61 20.62 20.87 20.49 21.00 L 0.00 21.00 L 0.00 20.38 C 6.82 13.64 14.25 7.00 20.48 0.00 Z" />
    </g>
    </svg>

Проект не компилируется из-за ошибки Invalid file path '(путь к файлу)'. Что я делаю не так?

Нашел, что android проекты не поддерживают svg. Якобы файлы нужно в xml переделать.


Ответы (2 шт):

Автор решения: Alexandr_TT

Попробуйте убрать устаревшую форму записи - namespace svg

 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"

Современная запись namespace

<svg xmlns="http://www.w3.org/2000/svg" 
      xmlns:xlink="http://www.w3.org/1999/xlink">

Если помню правильно, то запись:

<?xml version="1.0" encoding="UTF-8" ?> Применялась раньше для standalong (автономных) svg файлов. Тоже лучше убрать, если файл используется в проекте

Итого:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21pt" height="21pt" viewBox="0 0 21 21" version="1.1" >
    <g id="#797979ff">
       <path fill="#797979" opacity="1.00" d=" M 20.48 0.00 L 21.00 0.00 L 21.00 20.48 C 20.87 20.61 20.62 20.87 20.49 21.00 L 0.00 21.00 L 0.00 20.38 C 6.82 13.64 14.25 7.00 20.48 0.00 Z" />
    </g>
</svg>

→ Ссылка
Автор решения: Yura Ivanov

Во-первых, svg надо сконвертировать в vector xml. В AndroidStudio есть для этого пункт меню file->new->vector asset:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="21dp"
    android:height="21dp"
    android:viewportWidth="21"
    android:viewportHeight="21">
  <path
      android:pathData="M20.48,0L21,0L21,20.48C20.87,20.61 20.62,20.87 20.49,21L0,21L0,20.38C6.82,13.64 14.25,7 20.48,0Z"
      android:fillColor="#797979"/>
</vector>

Во-вторых, не надо создавать никакие папки где попало. В ресурсах все папки имеют свой смысл и назначение. drawable ресурсы кладутся в res/drawable. Именно туда надо поместить сконвертированный из svg в xml файл (он сам туда сложится если пользоваться утилитой см выше).

NB не все svg будут корректно сконвертированы в vector, кроме того объем векторов также важен. Вектора предназначены в основном для иконок на кнопках. Если у вас какое-то большое изображение будет, делайте его в png, 9-patch.png...

→ Ссылка