android - 在 Mac OS 上使用 gradle 从 SVG for Android 生成可绘制对象

标签 android macos svg gradle android-drawable

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

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

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

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

用过的:

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

不幸的是,它不是开箱即用的。 我总是从 gradle 得到“没有这样的文件或目录”。 无法找到插件使用的 ImageMagick 转换工具。

直接从没有 gradle 的 shell 生成的转换调用正在工作。

最佳答案

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

安装: 从外壳执行

  • 酿造更新
  • 酿造安装 imageMagick
  • 酿造安装 librsvg

设置:

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

再次外壳:

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

添加这一行:

  • setenv PATH/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

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

保存修改后的laundchd.conf。

重启

Gradle的配置:

将以下代码 fragment 添加到全局 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

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

快乐生成!

关于android - 在 Mac OS 上使用 gradle 从 SVG for Android 生成可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351549/

相关文章:

android - 无法正确设置 Android Actionbar 背景

macos - 将无代码 KEXT 迁移到无代码 DEXT

html - SVG 作为 <img> 标签中的源未显示在 Internet Explorer 11 中

javascript - 无法旋转文本d3js

css - 如何将 svg-glyph 转换为路径?

android - hidraw 设置报告/发送报告不适用于 Android 6.x

android - Android 中的等距平铺 map

json - 使用 shell 脚本解析 JSON

java - 如何在java中检查给定的域名http或https?

ios - Xcode 没有显示最新版本的 iOS?