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.
The main difference between a
resources such as
layouts, drawablesetc. 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.
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.