Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


BinaryDrawable is a simple library designed to make it easy to distribute graphic resources (images) inside a JAR file on the Android platform. See

Traditionally JAR files can include images and other non-code resources. However, the Android development and build process requires that any non-code resources be included in a separate res folder. If you are distributing a library with multiple resources then you generally have to use an Android library project.

If your library only makes minimal use of images (in the case of the Hipmob library, a couple of icons and placeholder images) it would be nice to just be able to distribute your library as a JAR file. BinaryDrawable makes that possible by converting images into Java source files that can be included in the JAR package. When compiled the resulting class will contain a method that returns a BitmapDrawable: you can then use the BitmapDrawable anywhere a Drawable is accepted (which is just about everywhere on the Android platform).


To convert any image that can be understood by the Android platform's built-in BitmapFactory into a BinaryDrawable instance we simply read the image file and create a Java source file that includes a byte array with the image data. The generated class can then use decodeByteArray to get a Bitmap, and then it is a short hop to a BitmapDrawable.


The library build uses ant: you will need to have the ANDROID_SDK environment variable setup (or edit the build.xml file to point to the right place).

Open a shell in the library directory and run ant. The JAR file produced (binarydrawable.jar) will contain the source generator.


To convert any image that can be understood by the Android platform's built-in BitmapFactory into a BinaryDrawable instance:

java -jar binarydrawable.jar -i <image file> -o <class name> -p <package name>

Only the image file and the class name are required. If the package name is not specified then the generated class will not have a package statement. As an example, to convert disconnected.png into the source file in the package

java -jar binarydrawable.jar -i disconnected.png -o Disconnected -p

or without a package name (which would be odd, but who are we to judge):

java -jar binarydrawable.jar -i icon.png -o Icon


  • There are limits on the output size of any class file: if your source image is over 10KB in size the output file may not compile. This utility is really only useful for small images: if you're dealing with anything large, go with the res/drawable option.

  • The current implementation only accepts JPG and PNG formatted images.


Developed by Femi Omojola ( for Orthogonal Labs, Inc. (


Create Java class files that return Bitmap and BitmapDrawables.







No releases published


No packages published