Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
659 views
in Technique[技术] by (71.8m points)

gradle - 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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...