Android:在res中使用SVG会导致错误:"文件名必须以.xml或.png结尾"

Rob*_*son 11 svg android gradle android-gradle-plugin

我刚刚更新了Android Studio 1.2.1.1,现在gradle在我的资源文件夹中遇到svg问题.我总是使用SVG没有问题,我希望它们将来会被"允许".

: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
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决?

TWi*_*Rob 19

Android不支持SVG文件作为drawables.即使你把它们放在那里,系统也无法像你期望的那样解码它们.而是尝试将它们放入src/main/res/rawsrc/main/assets文件夹并适当加载它们(通过外部库).大多数人混淆SVG和Vector-drawables,它们不是一回事.Vector-drawables使用与SVG兼容的路径迷你语言,但就是这样.

当前接受的解决方案是恢复到Gradle插件的古老版本,这在大多数情况下会适得其反.工具团队正在投入大量精力来使构建更好(这是非常值得注意的).

你应该继续前进1.5.0(现在已稳定一段时间)并添加 android.disableResourceValidation=true到你的gradle.properties文件中(通常位于根项目旁边settings.gradle)以启用1.2.2之前的行为,而不是恢复.

有关详细信息,请参阅http://b.android.com/192493


afr*_*ank 6

可绘制资源目录中的webp文件也存在同样的问题.

最新的gradle插件(v1.2.3)无法识别以前曾经使用过的某些图像格式.当我切换回v1.2.2时,我没有这个问题

更新:鉴于此功能已得到修复,您应该升级到最新的gradle插件版本而不是恢复.

您可以通过设置更改build.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'
  }
}
Run Code Online (Sandbox Code Playgroud)


For*_*ran 6

通过“资源管理器”将 svg 简单导入到 xml