How to use Android Studio's SVG-to-VectorDrawable converter from the command line
Since the very beginning, one of the most annoying aspects of using VectorDrawable
s on Android has been the lack of a reliable SVG converter. Google has recently made huge strides towards improving Android Studio’s SVG-to-VectorDrawable
tool in order to improve this experience.
However, there has always been one major issue for me: the tool doesn’t support batch conversion of SVGs and can’t be invoked from the command line. Working at Lyft, it’s not uncommon for me to need to convert hundreds of SVGs into VectorDrawable
s at a time. Having to go through Android Studio’s GUI in order to convert each SVG one-by-one is simply not realistic.
Well, this weekend my good buddy Nick Butcher taught me how to build the tool as a binary that can be executed from the command line, and I’m so excited about it that I had to share it with the world! :)
Where can I download it?
I anticipate many won’t want to go through the trouble of building these binaries from scratch, so I built them myself and hosted them on Google Drive here.
How do I run it?
The following command will convert all SVGs in a directory called svgs/
, convert them all into VectorDrawable
s, and write them to a directory called vectors/
. Note that both directories must exist beforehand.
./vd-tool -c -in svgs/ -out vectors/
How do I build it?
In case you want to build these yourself, here’s how I did it.
First, follow the Downloading the Source guide to install and set up the repo
tool, but instead of running the listed repo
commands to initialize the repository, run the folowing:
repo init -u https://android.googlesource.com/platform/manifest -b <most-recent-android-studio-branch>
At the time of this writing, the most recent Android Studio branch was studio-3.2.1
. This will obviously change over time as newer versions of Android Studio are released.
Now that your repository is set to pull only what you need for building and running the tool, download the code using the following command (you might want to grab a coffee or something too, as this command might take a while to complete):
repo sync -j8 -c
Finally, execute the following to build the binaries:
cd ./tools/base
../gradlew publishLocal
Once it completes, you should find the binaries in a <root>/out/build/base/vector-drawable-tool/build/distributions/vd-tool.zip
file. Unzip it and it will extract a /bin
directory that contains binaries compatible with Mac OS X, Linux, and Windows.
How do I report bugs?
Now for the most important part of this blog post…
Please, please, please file bugs if you discover SVGs that don’t convert properly! File the bugs in the Android Studio public issue tracker. Here’s an example bug I recently reported if you need a template to go by.
My goal is to make the Android Studio converter the most reliable SVG-to-VectorDrawable
converter out there. So if and when you file a bug, feel free to hit me up on Twitter with a link to the report and I’ll do my best to ensure the bug is fixed as quickly as possible!
Happy converting!