38

I am having one .aar file of one library module.
I want to use it as a library or dependency in my other project's library module.
How do I do it?

I tried options provided at below links:
http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project/

It works only if I add .aar reference in my project's application module. But not working in library module.

Thanks.

Gabriele Mariotti
  • 320,139
  • 94
  • 887
  • 841
Swati
  • 419
  • 1
  • 4
  • 6
  • please provide your `build.gradle` – gio Jan 13 '16 at 11:17
  • Possible duplicate of [Adding local .aar files to my gradle build](http://stackoverflow.com/questions/21882804/adding-local-aar-files-to-my-gradle-build) – piotrek1543 Jan 13 '16 at 11:18
  • allprojects { repositories { jcenter() flatDir { dirs 'libs' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:recyclerview-v7:23.0.1' compile(name:'mylibmodule', ext:'aar') } – Swati Jan 13 '16 at 11:19
  • @Swati check above link . – IntelliJ Amiya Jan 13 '16 at 11:31

7 Answers7

70

Follow this setting and you will able to add .aar dependency to library module

build.gradle (Project: ....)

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        flatDir {
            dirs 'libs'
            dirs project(':library_module').file('libs')
        }
    }
}

build.gradle (Module: app)

dependencies {
    ...
    compile project(':library_module')
}

build.gradle (Module: library_module)

dependencies {
    ...
    compile(name:'aar_file_name', ext:'aar')
}

settings.gradle (Project Settings)

include ':app', ':library_module'
Linh
  • 57,942
  • 23
  • 262
  • 279
14

In all modules (library or application) where you need the aar file you have to add in your build.gradle the repository:

repositories {
    flatDir {
        dirs 'libs'
    }
}

and add the dependency:

dependencies {
   compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
 }

You can use the top-level file to add the repositories, but you can't add the dependencies in the top-level file.
Pay attention to the relative path of the libs folder that you are using in the module.

GabrielOshiro
  • 7,986
  • 4
  • 45
  • 57
Gabriele Mariotti
  • 320,139
  • 94
  • 887
  • 841
8

Sorry process involves 10 steps but these are super simple and easy.

1- New->Module

enter image description here

2- Select import .jar/aar package

enter image description here

3- Select your .aar file from location

enter image description here

4- We can see module is added but not configured with app module yet.

enter image description here

5- Go to Project Structure

enter image description here

6- Current project structure is like this one

enter image description here

7- Go to app module and press '+' icon

enter image description here

8- Select 3rd option Module dependency

enter image description here

9- Select newly added .arr module

enter image description here

10- you can see the new module attached with app module. Now click apply.

enter image description here

you can see we are good to go. enter image description here

Nouman Ch
  • 4,023
  • 4
  • 29
  • 42
5

I did it a bit differently than others have posted here...

My main goal was to create a library module that contained all the jar's and aar's that I would need. My main project would then depend on this library module - I only wanted a single line in the main project's build.gradle to link this dependency.

  1. Add a new library module to the project: File -> New -> New Module -> Android Library

  2. within the library module, open the build.gradle and add:

// so that the library project can locate the aar in /libs
repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation fileTree(include: ['*.aar'], dir: 'libs')
}

now you can pop all the jar's and aar's into the /libs folder of your library module. Bonus: whatever the library name is doesn't matter, it's automatically discovered

Someone Somewhere
  • 23,475
  • 11
  • 118
  • 166
  • I was trying the same thing but this didn't work for me. it looks at app/libs directory instead – osrl Feb 10 '21 at 11:37
  • 2
    I can't find the answer to this. There's hundreds of answers just like this one but none of them seem to work for me. Error is `Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting A AR.` – Daniel Wilson Apr 19 '21 at 21:52
  • @DanielWilson I'm facing the same issue, do you find any solution? – Wellington Yogui May 11 '23 at 15:13
  • @WellingtonYogui see this answer: https://stackoverflow.com/a/70074787/1866373 – Daniel Wilson May 12 '23 at 16:01
4
  1. File -> New Module -> Import .JAR/.AAR
  2. import the .AAR file.
  3. in library module build.gradle add the dependency dependencies{compile project(':Name-Of-Your-Module-aar')}

http://tools.android.com/tech-docs/new-build-system/tips#TOC-Handling-transitive-dependencies-for-local-artifacts-jars-and-aar-

Young
  • 41
  • 4
  • I was able to work through my problem following these steps. The settings.gradle and build.gradle files are automatically updated, leaving me to only implement step # 3. Thank you! – Coach Roebuck Apr 06 '18 at 19:29
0

The easiest way will be to copy your aar file to the library module's libs folder. and in the app level build.gradle implement the dependency like below

implementation files('libs/aar_file_name.aar')
Abhijith Brumal
  • 1,652
  • 10
  • 14
0

Under dependencies in the module's build.gradle add the associated .aar files with

compileOnly files('libs/api-release.aar')

And then in the importing project's app/build.gradle add the .aar files with

implementation files('../../node_modules/react-native-misnap/android/libs/api-release.aar')
Dan G Nelson
  • 862
  • 2
  • 11
  • 30