Skip to content

Android Archive Library (aar) vs standard jar

I’ve been reading some articles about the new adoption of Gradle as the standard build system for Android apps. Well, coming from standard Java development I usually depend on jar files in order to build my project. However it seems that Android has also aar packages, which are the equivalent to the dll files in a Windows OS, as mentioned here:

First, you have to realize that the Android platform does not allow application-level “shared libraries”. In the “traditional” programming language platforms, C, C++, Java, you name it, we have this mechanism of sharing runtime libraries. (E.g., DLL on Windows, DSO on Unix, Jar on JVM, etc.). On Android, however, you cannot do that, unless you are Google or a handset manufacturer (See Footnote 1 below). As an application developer, this can be a fundamental limitation. “Sharing” or “reusing” codes, both at build time and run time, is a very important part of software engineering practice. This is rather hard (not impossible, just harder) on Android because of the aforementioned limitation.

However, I have some doubts around this concept. I mean, when should a developer be interested including aar dependencies in its application? Are this dependencies tightened to some SDK minimum version?

For example, in one project I access a COM port, which I use NDK precompiled .so libraries for. Do I have to create an aar if I want to share this utility?



AAR files are more similar to Jars than to Dlls for the following reason:

Dlls can be shared across applications where as AARs and jars are
packaged in with your app.

AARs vs Jars:

The main difference between a Jar and a AAR is that AARs include
resources such as layouts, drawables etc. This makes it a lot easier
to create self-contained visual components. For example if you have
multiple apps that use the same login screen, with Jars you could
share classes but not the layout, styles, etc., you still had to
duplicate them. With AARs everything is bundled in one neat package.

In conclusion, AARs are a big step in the right direction.

Similar attempts were made with apk-libs but they are now obsolete as AARs are much better.

8 People found this is helpful