为什么我的SVG在矢量资源工作室中无法加载

55
以下SVG在Android Studio的矢量素材工作室中无法打开,导致错误:

"空预览图像! 解析TareSymbol.svg时发生异常: 对于输入字符串:“8.7337904mm”,文件格式异常。解析XML文件时发生异常:文件过早结束。"

为什么下面的SVG文件与矢量素材工作室不兼容?

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   id="svg20235"
   viewBox="0 0 61.500162 30.946501"
   height="8.7337904mm"
   width="17.356712mm">
  <defs
     id="defs20237" />
  <metadata
     id="metadata20240">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     transform="translate(-109.24987,-351.17467)"
     id="layer1">
    <path
       d="m 145.03542,367.34167 10.897,-4.49325 -0.009,3.30587 13.69124,0.0372 1.13537,0 0,2.1285 -1.13537,0 -13.69662,-0.0373 -0.009,3.33988 -10.87325,-4.281 z m -13.38814,-13.15875 0,-3.00825 16.97389,0 0,3.00825 -6.8995,0 0,27.93825 -3.15214,0 0,-27.93825 -6.92225,0 z m 3.31725,13.15875 -10.897,4.49325 0.009,-3.3055 -13.69129,-0.0373 -1.13537,0 0,-2.1285 1.13537,0 13.69662,0.0372 0.009,-3.33988 10.87325,4.28063 z"
       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
       id="path20212" />
  </g>
</svg>

enter image description here


在我的情况下,它成功导入了。可能现在有更新的版本。 - Hassan Sajjad
11个回答

42

Android Studio的矢量素材工具目前不支持SVG的所有功能。您可以使用此工具将SVG转换为VectorDrawable。

希望能对您有所帮助。


8
非常感谢您的建议,但不幸的是,这个方法也行不通。 - Luke Allison
请查看此YouTube链接以供参考。 - user6154174
谢谢提供链接。我可以确认这个工具对我在一个 SVG 文件上有效,其中一条路径被 Android Studio 留下了。 - BooleanCheese
2
此工具已经被废弃。建议使用Android Studio的矢量资源工具,但仍会出现错误。 - dhanushkac

15

我的SVG图像是从一个在线网站创建的,并且viewbox标签中使用了,

即:

viewBox="0, 0, 350,450"

将其更改为:

viewBox="0 0 350 450"

这样就可以在Android Studio中导入它了。


15
你需要将svg的宽度和高度从mm更改为px。这是一个当前的解决方法,在问题被修复之前使用。
已经有一个已提交的错误报告,链接在这里

10

经过几个小时的研究,我找出了问题所在,甚至使用外部的svg2vectordrawable脚本也无济于事。

形状的大小和/或文档页面大小不能包含浮点数,如14.134或3.5。

这意味着形状和页面的宽度和高度必须是整数


是的,就是这样。谢谢,你知道他们是否将其添加到最新版本3.1.2中,而之前没有吗? - Danail Gabenski

9
如@Kingsley Adio所说,您必须使用px单位来制作SVG文档。
在Inkscape中,我通过创建自定义页面大小并将输出单位设置为px来实现:

Inkscape Document Properties


7
将Inkscape生成的.svg文件导入Adobe Illustrator并导出,可以完全解决此问题。

嗯...Inkscape是免费的,通常被用作“穷人”的Adobe Illustrator。 - DenisGL
如果您正在使用Sketch,则此方法不可行。 - AdamHurwitz
我该如何使用Sketch导出图像? - AdamHurwitz

1

在设置中更改语言对我有帮助!我电脑上的语言是荷兰语(使用逗号而不是浮点数),将其更改为英语并重新启动后,问题得到了解决。


1
嘿,感谢您的贡献。不幸的是,您的问题可能被归类为低效,尽管它在技术上可能是正确的。请尝试在您的回答中包含细节,例如逐步更改浮点符号的方法,以便它可以作为一个合适的答案使用。 - Samuel Hulla

1

以下是我在尝试使用 Vector Asset 工具导入SVG时发现可行的方法(它们不是互斥的):

  • 将值从mm更改为px(通常在width/height属性中找到)
  • 将浮点值四舍五入为整数(通常在width/heightviewBoxstyle属性中找到)。例如224.5。这个操作只需要对SVG节点进行,而不需要对多边形进行。

1
从https://www.flaticon.com下载的SVG文件目前似乎运行得非常完美。已经按照这些指南导入了10多个SVG文件。 - xarlymg89

0

各种选项可能会导致此错误(以下列出其中一些)。

导致问题的原因可能是在您的 .svg 文件中使用了 rgba(r,g,b,a)。只需检查并在发现时进行转换即可。

提示:您可以在任何文件编辑器中编辑 .svg 文件。


0

我曾经遇到过类似的问题。我使用的是Illustrator 2015。问题在于我的illustrator项目中有多个画板,当我保存为svg文件时必须选择一个特定的画板(为什么要这样做?我也不知道)。 只需保留包含所需设计的一个画板即可解决问题,然后将其保存为svg。

  1. 确保您的illustrator设计只有一个画板,其中包含您想要用作Android Studio矢量资源的设计。

  2. 在Illustrator中,选择“文件”->“另存为”->从下拉菜单中选择svg。保留所有其他选项默认设置。

  3. 转到Android Studio,在drawable上右键单击,然后单击“矢量图像”,导入新创建的svg文件。它将保存为drawable中的xml文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接