Как добавить Guava в мой проект Android Studio?

Прежде всего, я знаю о существовании этого вопроса - Как добавить проект библиотеки в Android Studio? - и, к сожалению, мне это не помогло.

Моя цель довольно проста. Я хочу написать приложение для Android, используя Android Studio IDE (0.2.11) и библиотеки Guava. в моем коде.

Я не знаю Gradle, я только начал использовать Android Studio, и мой опыт работы с Visual Studio/C# ошеломил меня, за что я прошу прощения (в этом мире Микки Мауса вы обычно просто добавляете ссылку на библиотеку и вперед).

Я буду документировать свои шаги со скриншотами. В основном я следовал советам, данным в этом ответе.

Я создал папку libraries в папке моего проекта.

введите здесь описание изображения

Я клонировал в него репозиторий Guava.

введите здесь описание изображения

Файлы успешно появились.

введите здесь описание изображения

Я пошел к Project Structure и выбрал Import Module.

введите здесь описание изображения

введите здесь описание изображения

Я выбрал Create module from existing sources и согласился со всеми вариантами по умолчанию.

Я обновил свой файл settings.gradle до include ':libraries:guava', ':Test':

введите здесь описание изображения

И мой файл build.gradle с compile project(":libraries:guava"):

введите здесь описание изображения

Но все, что я получаю всякий раз, когда пытаюсь перестроить проект, это:

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

Я попытался поместить build.gradle, как показано ниже, в папку guava:

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']
        }
    }
}

(как говорится в вышеупомянутом ответе).

Я гуглил вверх и вниз, чтобы найти «правильный» build.gradle для гуавы.

https://code.google.com/p/guava-libraries/wiki/UseGuavaInYourBuild - мне тоже не помогло.

Я пробовал бесчисленное количество вещей, которые я не буду описывать здесь, поскольку они были довольно случайными - я пытался добавить зависимость модуля, я пытался включить Use auto-import в Gradle settings и т. д.

Я знаю, что это не способ решения проблем, и я обещаю, что буду внимательно читать Руководство пользователя с 1 по 5.4.2 и 7.3, но я не могу поверить, что это действительно необходимое условие для достижения чего-то столь же ничем не примечательного, как простое добавление библиотеки в проект? Почему нет дефолтного build.gradle файла, с которого можно было бы начать ковыряться во всякой всячине, если надо?

И реальный вопрос: как мне создать приложение (в Android Studio), которое собирается, фактически работает на устройстве Android и, кроме того, позволяет мне использовать Guava, чтобы я мог сортировать карту по значения без написания 50 строк кода? :)

Извините за болтливый тон моего вопроса, я знаю, что здесь происходит, это просто мой способ выразить свое разочарование.

Судя по тому, сколько голосов было отдано за вопросы и ответы, посвященные схожим проблемам, я уверен, что я не единственный, кому были бы полезны дополнительные инструкции. Я бы сразу же начал баунти, но правила мне запрещают.


person Konrad Morawski    schedule 07.10.2013    source источник
comment
Кстати, я попробую ваши предложения и отвечу на любые вопросы завтра, так как здесь уже почти полночь :)   -  person Konrad Morawski    schedule 08.10.2013
comment
Я использовал тему, на которую вы ссылались в начале, чтобы без проблем добавить гуаву. НО я попробовал сейчас последнюю версию Android Studio, и структура проекта больше не дает мне доступа для добавления библиотеки. Что-то изменилось.   -  person Ryan Heitner    schedule 12.10.2013


Ответы (6)


Если вам просто нужно использовать стабильную выпущенную версию библиотек Guava, импортировать ее очень просто.

Просто перейдите в build.gradleфайл модуля, где вы хотите использовать библиотеку (т.е. GuavaTestProject/GuavaTest/build.gradle), и сразу после

repositories {
    mavenCentral()
}

добавить зависимость Maven:

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

Перестройте свой проект, если это необходимо, и все (прямо сейчас протестировано с новым проектом, созданным с помощью Android Studio 0.2.13).

Если вам действительно нужно включить исходный код библиотеки Guava и скомпилировать его самостоятельно как модуль вашей сборки Gradle, это совершенно другая проблема, потому что Guava создается с помощью Maven, и поэтому вам нужно переместить систему сборки Guava из Maven в Gradle, который, я думаю, чрезвычайно сложен для ваших целей.

Если вам просто нужно просмотреть исходный код или просмотреть его во время отладки, я бы сделал следующее:

  • Загрузите исходный код Guava в отдельную папку:

    git clone https://code.google.com/p/guava-libraries/
    git checkout v15.0
    
  • Когда Android Studio не находит исходники, нажмите «Прикрепить исходники» и укажите это альтернативное расположение.

Я думаю, что если вам не нужно на самом деле изменять и компилировать исходный код Guava, это самое простое решение.

person jlhuertas    schedule 13.10.2013
comment
Спасибо. Я присуждаю награду за исчерпывающий (и более ранний) ответ @RyanHeitner, но, поскольку вы также правы, я принимаю ваш ответ как способ дать вам баллы. Вы указали два важных факта, которые я упустил: 1. 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 (мне подходит это объяснение, мне просто не хватало этих знаний раньше, и я пытался добиться своей цели трудным путем) 2. Поскольку я могу прикреплять исходники, я могу отлаживать мой jar так же, как если бы я имел дело с открытым исходным кодом. И это действительно работает. Спасибо - person Konrad Morawski; 13.10.2013
comment
Все в порядке, с наградой проблем нет, я просто пытаюсь вернуть часть знаний, которые мне дают другие, так что я рад, что это сработало! ;) - person jlhuertas; 14.10.2013

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

Источник: https://github.com/google/guava.

РЕДАКТИРОВАТЬ: Начиная с версии 22, существует определенная версия guava для Android.

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

* Спасибо, Сэм :)

person AlikElzin-kilaka    schedule 10.07.2016
comment
не используйте полную библиотеку гуавы, используйте версию для Android, - person Sam; 19.09.2017

В вашем вопросе много информации. Я тоже использую Guava. Но я не помню, чтобы у меня были какие-то проблемы..

Guava доступен на mavencentral. Поэтому добавление гуавы в ваш проект должно быть довольно простым. Насколько я знаю, вам не нужно проверять, создавать и добавлять зависимость проекта и т.д.

См. файл gradle для моего приложения ниже.

buildscript {
    repositories {
        mavenCentral()
    }

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

apply plugin: 'android'

repositories {
     mavenCentral()
}

// Dependencies
dependencies {
    compile fileTree(dir: 'libs', include: '*.jar') // jar files under the libs folder.
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' // actionbarsherlock,
    compile 'com.android.support:support-v4:18.0.0' // android support lib
    compile 'com.google.code.gson:gson:2.2.4' // google GSON
    compile 'com.google.guava:guava:14.0.1' // guava 14.0.1
}
person Varun    schedule 07.10.2013
comment
Спасибо, я тоже попробую, конечно, и сообщу, если получится. Это само по себе должно пролить свет на проблему. Тем не менее, я хотел бы иметь возможность проверить полный исходный код библиотеки, которую я использую, если захочу. Возможно, сама по себе Guava не лучший пример, но любой небольшой проект с открытым исходным кодом, почему бы и нет, хорошо иметь возможность посмотреть реализацию и при необходимости отладить ее. - person Konrad Morawski; 08.10.2013
comment
Определенно. Если вы хотите использовать исходный код в качестве библиотеки, он также должен быть очень простым. Проект библиотеки будет использовать подключаемый модуль java в файле build.gradle. - person Varun; 08.10.2013
comment
На самом деле вы должны использовать «com.google.guava:guava-jdk5:14.0.+» для Android. - person Krylez; 08.10.2013
comment
@Krylez, только если вам небезразличен Android 2.2 и ниже, я думаю. Android 2.3 основан на jdk6. - person Lesleh; 08.10.2013
comment
@ Krylez Более новые версии Android могут работать с библиотеками Java, скомпилированными с помощью java 1.6. Как сказал @Lesleh, только если вы заботитесь о Фройо и ниже. - person Varun; 08.10.2013
comment
@Varun - это работает, я могу подтвердить. Спасибо. +1 для вас, но я до сих пор не знаю, как добиться этого, получив исходный код (поэтому я не отмечаю ваш ответ) - person Konrad Morawski; 10.10.2013
comment
@KonradMorawski Нет проблем. Работа с исходным кодом не должна быть такой большой проблемой. Позвольте мне попробовать с типовым проектом. - person Varun; 10.10.2013
comment
@Krylez, что такое гуава-jdk5 в отличие от обычной гуавы? - person Don Cheadle; 14.04.2015

не используйте полную библиотеку гуавы, используйте версию для Android,

dependencies {
    compile 'com.google.guava:guava:23.0-android'
}
person Sam    schedule 19.09.2017

В Android Studio 0.3.0 теперь это работает как надо на Mac. Дополнительные параметры добавления библиотек см. в примечаниях к выпуску http://tools.android.com/recent/androidstudio030released< /а>


Сейчас я работаю над Windows, и есть два варианта. Щелкните правой кнопкой мыши банку в библиотеках, и у вас есть добавление в библиотеку. Или вы можете нажать F4 и открыть настройки библиотеки, поэтому кажется, что вам не нужно так много бороться в Windows как на мак


Это то, что я сделал. Пожалуйста, прочитайте до конца, так как он работает непоследовательно, и если вы не видите синюю стрелку, сначала попробуйте, есть решение. Сначала я создал папку libs. Я не думаю, что это необходимо, но это привычка.

введите здесь описание изображения

Сначала попробуйте перейти в File , Project Structure.

Если вы видите маленькую синюю стрелку в левом верхнем углу, нажмите ее, и вы перейдете к экрану, где вы можете добавить библиотеку.

введите здесь описание изображения

Если вам удастся перейти на этот экран ниже, нажмите знак плюса и добавьте библиотеку. введите здесь описание изображения

Вы также можете увидеть красную линию внизу, говорящую о том, что гуава не используется с лампочкой. Эта заливка добавляет зависимость к файлу сборки Gradle введите здесь описание изображения

ЕСЛИ ВЫ НЕ ВИДИТЕ СИНЮЮ СТРЕЛКУ

ПЕРЕЙДИТЕ вместо этого в «Файл», «Другие настройки», «Структура проекта по умолчанию».

На этом экране вы можете добавить библиотеку введите здесь описание изображения

Затем вернитесь к структуре проекта и добавьте его. Дело в том, что он останется по умолчанию для всех ваших проектов, поэтому вы можете добавлять и удалять его для каждого отдельного проекта через меню структуры проекта. Я не уверен, является ли это ошибкой в ​​​​Android Studio, потому что вы можете быть заблокированы от добавления его в отдельный проект без изменения значения по умолчанию.

person Ryan Heitner    schedule 12.10.2013
comment
Спасибо. Я попробую сегодня. - person Konrad Morawski; 13.10.2013
comment
Итак, что именно вы помещаете в папку libs? Просто файл .jar? - person Konrad Morawski; 13.10.2013
comment
Это работает, просто в файл gradle нужно добавить строку compile fileTree(dir: 'libs', include: '*.jar') (как посоветовал Варун). Вы правы насчет этой особенности настроек проекта в Android Studio, и это важное замечание. Для меня это ошибка или, по крайней мере, нелогичная и неудобная для пользователя :( Я награждаю вас наградой, но я приму ответ @jlhuertas как способ дать ему еще 15 баллов, так как его ответ Мне тоже в какой-то мере помогло. Спасибо - person Konrad Morawski; 13.10.2013

Для Android Studio 3.2.1:

Откройте меню «Структура файла/проекта» (ctrl+alt+shift+S). Нажмите кнопку + на вкладке "Зависимости" в меню приложения, чтобы добавить зависимость библиотеки.

Найдите com.google.guava:guava:(любой самый последний номер) и добавьте его.

Добавить Guava в проект Android Studio Добавить Guava в проект Android Studio

person Allfarid Morales García    schedule 19.11.2018