Konrad Morawski Konrad Morawski - 28 days ago 8
Android Question

How do I add Guava to my Android Studio project?

First and foremost, I am aware of the existence of this question - How do I add a library project to Android Studio? - and unfortunately, it has not helped me.

My goal is rather simple. I want to write an Android app using the Android Studio IDE (0.2.11), and the Guava libraries in my code.

I do not know Gradle, I've only started using Android Studio and my Visual Studio/C# background has dumbed me down, for which I apologize (in that Mickey Mouse world, you typically just add a library reference and off you go).

I will document my steps with screenshots. I mostly followed advice given in this answer.

I created a

libraries
folder under my project folder.

enter image description here

I cloned Guava repository into it.

enter image description here

Files successfully appeared.

enter image description here

I went to
Project Structure
and selected
Import Module
.

enter image description here

enter image description here

I selected
Create module from existing sources
and agreed to all the default choices.

I updated my
settings.gradle
file to
include ':libraries:guava', ':Test'
:

enter image description here

And my
build.gradle
file with
compile project(":libraries:guava")
:

enter image description here

But all I'm getting whenever I'm trying to rebuild the project is:

Error: Gradle: A problem occurred configuring project ':Test'.
> Failed to notify project evaluation listener.
> Configuration with name 'default' not found.


I did try putting a
build.gradle
as below in the
guava
folder:

buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}

apply plugin: 'android-library'

dependencies {
compile 'com.android.support:support-v4:13.0.+'
}

android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}


(as the aforementioned answer says).

I have googled up and down to find the "correct"
build.gradle
for Guava.

https://code.google.com/p/guava-libraries/wiki/UseGuavaInYourBuild - didn't help me, either.

I did try countless things which I will not describe here as they were rather haphazard - I tried adding a module dependency, I tried turning
Use auto-import
on in
Gradle settings
, etc.

I know it's not a way of solving issues and I promise I will diligently read Gradle's User Guide from 1 through 5.4.2 to 7.3, but I can't believe this is really prerequisite to achieve something as unremarkable as merely adding a library to a project? Why is there no default
build.gradle
file from which one could start to fiddle with all sorts of things if necessary?

And the real question - how do I create an app (in Android Studio) that builds, actually runs on an Android device and on the top of that allows me to use Guava so I could sort a map by values without writing 50 lines of code? :)

Sorry about the chatty tone of my question, I know the drill around here, it's just my way of venting my frustration off.

Judging by how many votes were casted for questions and answers that tackled similar issues, I'm sure I'm not the only one who would benefit from some more instructions. I would start a bounty on it straight away, but the rules forbid me.

Answer Source

If you just need to use a stable, released version of the Guava libraries, importing it is extremely easy.

Just go to the build.gradlefile of the module where you want to use the library (i.e GuavaTestProject/GuavaTest/build.gradle) and, right after

repositories {
    mavenCentral()
}

add a Maven dependency:

dependencies {
    compile group: 'com.google.guava', name: 'guava', version: '15.0'
}

Rebuild your project if needed and that's all (tested right now with a fresh project created with Android Studio 0.2.13).

If you really need to include the source code of the Guava library and compile it yourself as a module of your Gradle build that's an entirely different problem because Guava is build with Maven and so you need to move the Guava build system from Maven to Gradle, which I think is overwhelmingly complex for your goals.

If you just need to browse the source or view it while debugging, what I would do is:

  • Download Guava source code on a separate folder:

    git clone https://code.google.com/p/guava-libraries/
    git checkout v15.0
    
  • When Android Studio doesn't find the sources, click on "Attach sources" and point to this alternative location.

I think if you don't need to actually modify and compile Guava source code this is the easiest solution.