[DEPRECATED]A gradle plugin that helps to output fat aar from android library
This repo is Deprecated. As the version of android gradle plugin keep increasing, I don’t have enough time to keep supporting. And it stopped at 0.2.8
, which supports android plugin at 2.2.3
and prior.
This is a gradle plugin that helps to output fat aar from android library. I am inspired by android-fat-aar. And aim to make more flexible and functional. It’s convenient to sdk developer(developer that provide a single aar library).
It works with the android gradle plugin, the android plugin’s version of the development is 2.2.3
, other revision is not tested actually. Commit an issue as you encounter some compatibility.
Update: Android plugin version 2.3.0 and later, is not well supported. disable build-cache may do the trick. So the recommend version is 2.2.3 and prior. Look this issue for more.
Essentially, fat-aar-plugin
makes a hack way, to collect resources, jar files and something others in embedded dependencies, into the bundled output aar. Click here to know more about AAR
.
[Features]
android library project
, java project
, android library and java library from maven repositories
. Local jar file is not needed to use embed
, compile
is enough.android plugin
. Such as multi build type, product flavor, manifest placeholder, proguard… If you find something wrong, commit an issue.libs\
in aar when the proguard is off. Otherwise , they will be bundled into classes.jar
in aar, it means classes in dependencies will also be obfuscated.Add snippet below to your root build script file:
buildscript {
repositories {
maven {
url "http://dl.bintray.com/vigidroid/maven"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:xxx'
classpath 'me.vigi:fat-aar-plugin:0.2.8'
}
}
Add snippet below to the build.gradle
of your android library:
apply plugin: 'me.vigi.fat-aar'
change compile
to embed
while you want to embed the dependency in the library. Like this:
dependencies {
// aar project
embed project(':aar-lib')
// java project
embed project(':java-lib')
// java dependency
embed 'com.google.guava:guava:20.0'
// aar dependency
embed 'com.android.volley:volley:1.0.0'
// other dependencies you don't want to embed in
compile 'com.squareup.okhttp3:okhttp:3.6.0'
}
More usage see example.
AAR is a file format for android library.
The file itself is a zip file that containing useful stuff in android.
See anatomy of an aar file here.
support list for now:
Note: duplicate definition of library class
, while proguard is on. A workaround is to add -dontnote
in proguard-rules.pro
.string/app_name
). A duplicate resources build exception will be thrown. To avoid res conflicts, consider using a prefix to each res Id, both in library res and aar dependencies if possible.