51

下面的 SVG 无法在 Android Studio 的 Vector Asset Studio 中打开,从而导致错误:

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

为什么以下 SVG 文件与 Vector Asset Studio 不兼容?

<?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>

在此处输入图像描述

4

11 回答 11

42

Android Studio 的 Vector Asset Studio 目前还不支持 SVG 的所有功能。您可以使用此工具将 SVG 转换为 VectorDrawable 。

希望能帮助到你。

于 2016-04-28T09:10:54.323 回答
15

您需要将 svg 的宽度和高度从mm改为使用px。这是解决问题后的当前解决方法。

这里已经有一个提交的错误报告

于 2016-05-20T02:53:50.290 回答
12

,我的 SVG 是在viewbox标签中创建的(从在线网站) 。

IE:

viewBox="0, 0, 350,450"

将其更改为:

viewBox="0 0 350 450"

允许 Android Studio 导入它

于 2019-10-25T19:37:13.420 回答
10

花了几个小时后,我发现了问题,甚至使用外部svg2vectordrawable脚本也无济于事。

形状的大小和/或文档的页面大小不能在其宽度/高度中包含浮动数字,例如 14.134 或 3.5

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

于 2018-04-20T18:39:09.237 回答
9

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

Inkscape 文档属性

于 2016-06-21T16:10:35.270 回答
6

将 Inkscape 中生成的 .svg 文件导入 Adob​​e Illustrator 并导出它们 100% 解决了这个问题。

于 2016-05-16T02:02:17.600 回答
1

尝试使用该工具导入 SVG 时对我有用的东西的编译Vector Asset(它们不是互斥的):

  • 将值从mmto更改px(通常在width/height属性中找到)
  • 将值四舍五入将值浮动为整数(通常在width/heightviewBoxstyle属性中找到)。喜欢224.5。您不必在多边形中执行此操作,而只需在 SVG 节点上执行此操作。
于 2018-06-12T13:28:05.247 回答
1

更改设置中的语言对我有帮助!我在计算机上使用荷兰语作为语言(使用逗号而不是浮点数)并将其更改为英语并重新启动对我有用。

于 2018-08-03T14:51:18.873 回答
0

将文本更改为对象为我解决了这个问题。如果您使用 Inkscape:首先单击Ctrl+ K(路径组合),然后单击Ctrl+ J(动态偏移)。

于 2018-04-16T19:27:19.660 回答
0

多种选项可能会导致此类错误(其中一些在此处列出)。

导致可能是rgba(r,g,b,a)在您的 .svg 文件中使用。如果找到,只需检查并转换。

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

于 2018-06-12T15:22:40.850 回答
0

我有类似的问题。我正在使用Illustrator 2015。问题原来是我的插画项目中有多个画板,当保存为 svg 文件时我必须选择一个特定的画板(为什么这样做?不知道)。 通过只有一个包含我想保存为 svg 的设计的画板来解决。

  1. 确保您的插画家设计只有一个画板,其中包含
    您要在 android studio 中用作矢量资产的设计。

  2. 在 Illustrator 文件->另存为->从下拉列表中选择 svg。将所有其他选项保留为默认值。

  3. 转到android studio,右键单击drawables并单击矢量资产并导入您新创建的svg文件。它将在drawables中保存为xml文件。

于 2021-02-13T10:30:56.253 回答