使用 gradle on Mac OS 从 SVG 为 Android 生成可绘制对象

Generating drawables from SVG for Android with gradle on Mac OS

情况: 我从设计师那里得到了 SVG 文件。

图标字体在标准 Android 组件中不容易使用。

所以我需要所有我支持的尺寸的可绘制对象

一切都应该通过 Gradle 实现自动化。

已用:

我发现并使用了这个不错的插件 https://github.com/eowise/gradle-imagemagick

不幸的是,它不是开箱即用的。 我总是从 gradle 得到 "No such file or directory"。 无法找到插件使用的 ImageMagick 转换工具。

直接从 shell 开始,没有 gradle 生成的转换调用正在运行。

最后我为我修复了它,我会把它写下来作为一个捷径。

安装: 从 shell

执行
  • 酿造更新
  • brew 安装 imageMagick
  • brew 安装 librsvg

设置:

设置 PATH 变量对我不起作用。我不得不将imageMagick转换工具的安装路径写到/etc/launchd.conf 我在这里找到了信息:[https://serverfault.com/questions/16355/how-to-set-global-path-on-os-x][1]

再次shell:

  • sudo touch /etc/launchd.conf
  • sudo nano /etc/launchd.conf

添加这一行:

  • setenv 路径/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

您可以查看 convert 的安装位置。在 shell 中输入 "which convert"。现在是 /usr/local/bin

保存修改后laundchd.conf。

重启

Gradle的配置:

将以下代码片段添加到全局 build.gradle 脚本中。

buildscript {
    repositories {

        mavenCentral()
    }
    dependencies {
         classpath 'com.eowise:gradle-imagemagick:0.4.0'
    }
}

task svgToPNG {
[
        [ variant: 'mdpi', size: '32x32' ],
        [ variant: 'hdpi', size: '48x48' ],
        [ variant: 'xhdpi', size: '64x64' ],
        [ variant: 'xxhdpi', size: '96x96' ],
        [ variant: 'xxxhdpi', size: '128x128']
].each {
    item ->
        task( "buildIcons${item.variant.capitalize()}", type: com.eowise.imagemagick.tasks.Magick) {
            convert './app/src/main/svgResources', { include '*.svg' }
            into "./app/src/main/res/drawable-${item.variant}"
            actions {
                -background('none')
                inputFile()
                -resize(item.size)
                outputFile { filename, extension -> "${filename}.png" }
            }
        }
    }
}

调整 SVG 资源和应用模块的路径。

现在你可以运行 - ./gradlew svgToPNG

您将为每个可绘制类别获得一个任务。

  • buildIconsHdpi buildIconsMdpi buildIconsXhdpi buildIconsXxhdpi buildIconsXxxhdpi

运行 全部,您应该会在给定的可绘制文件夹下看到新生成的资源

快乐生成!