Adding a library/JAR to an Eclipse Android project

Now for the missing class problem.

I’m an Eclipse Java EE developer and have been in the habit for many years of adding third-party libraries via the “User Library” mechanism in Build Path. Of course, there are at least 3 ways to add a third-party library, the one I use is the most elegant, in my humble opinion.

This will not work, however, for Android, whose Dalvik “JVM” cannot handle an ordinary Java-compiled class, but must have it converted to a special format. This does not happen when you add a library in the way I’m wont to do it.

Instead, follow the (widely available) instructions for importing the third-party library, then adding it using Build Path (which makes it known to Eclipse for compilation purposes). Here is the step-by-step:

  1. Download the library to your host
    development system.
  2. Create a new folder, libs, in
    your Eclipse/Android project.
  3. Right-click libs and choose
    Import -> General -> File System,
    then Next, Browse in the filesystem
    to find the library’s parent
    directory (i.e.: where you
    downloaded it to).
  4. Click OK, then click the
    directory name (not the checkbox) in
    the left pane, then check the
    relevant JAR in the right pane. This
    puts the library into your project
    (physically).
  5. Right-click on your project,
    choose Build Path -> Configure Build
    Path, then click the Libraries tab,
    then Add JARs…, navigate to your
    new JAR in the libs directory and
    add it. (This, incidentally, is the moment at which your new JAR is converted for use on Android.)

NOTE

Step 5 may not be needed, if the lib is already included in your build path. Just ensure that its existence first before adding it.

What you’ve done here accomplishes two things:

  1. Includes a Dalvik-converted JAR
    in your Android project.
  2. Makes Java definitions available
    to Eclipse in order to find the
    third-party classes when developing (that is, compiling)
    your project’s source code.

Leave a Comment