Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 248
Konrad Morawski Avatar asked Oct 07 '13 21:10

Konrad Morawski


People also ask

How to add Guava dependency?

Dependency on Guava can be added in your Java project by using any build system. You can also just manually download JARs from Guava's release page for the classes, sources and javadocs. Note that JDK 1.6 or newer is required for Guava 12.0 through 20.0. See Version list for more info.


2 Answers

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.

like image 81
jlhuertas Avatar answered Sep 18 '22 13:09

jlhuertas


dependencies {   compile 'com.google.guava:guava:19.0' } 

Source: https://github.com/google/guava

EDIT: As of v22, there's specific guava version for Android.

dependencies {   compile 'com.google.guava:guava:22.0-android' } 

* Thanks Sam :)

like image 35
AlikElzin-kilaka Avatar answered Sep 22 '22 13:09

AlikElzin-kilaka