Как добавить проект библиотеки (например, Sherlock ABS) в Android Studio?
(Не для старого пакета ADT Eclipse, а для новой Android Studio.)
Как добавить проект библиотеки (например, Sherlock ABS) в Android Studio?
(Не для старого пакета ADT Eclipse, а для новой Android Studio.)
Обновление для Android Studio 1.0
Так как Android Studio 1.0 был выпущен (и много версий между v1.0 и одним из первых с момента моего предыдущего ответа), некоторые вещи изменились.
Мое описание сосредоточено на добавлении проекта внешней библиотеки вручную через Gradle файлы (для лучшего понимания процесса). Если вы хотите добавить библиотеку через создателя Android Studio, просто проверьте ответ ниже с помощью визуального руководства (есть некоторые отличия между Android Studio 1.0 и скриншотами, но процесс очень похож).
Прежде чем приступить к добавлению библиотеки в свой проект вручную, рассмотрите возможность добавления внешней зависимости. Это не беспорядок в вашей структуре проекта. Почти каждая известная Android-библиотека доступна в репозитории Maven, и его установка занимает только одну строку кода в файле app/build.gradle
:
dependencies {
compile 'com.jakewharton:butterknife:6.0.0'
}
Добавление библиотеки
Вот полный процесс добавления внешней библиотеки Android в наш проект:
HelloWorld/ app/ - build.gradle // local Gradle configuration (for app only) ... - build.gradle // Global Gradle configuration (for whole project) - settings.gradle - gradle.properties ...
HelloWorld/
) создайте новую папку: /libs
, в которой хорошо размещаются наши внешние библиотеки (этот шаг не требуется - только для сохранения более чистой структуры проекта)./libs
. В этом примере я использовал PagerSlidingTabStrip library (просто загрузите ZIP из GitHub, переименуйте библиотечный каталог в "PagerSlidingTabStrip" и скопируйте его). Вот новая структура нашего проекта:HelloWorld/ app/ - build.gradle // Local Gradle configuration (for app only) ... libs/ PagerSlidingTabStrip/ - build.gradle // Local Gradle configuration (for library only) - build.gradle // Global Gradle configuration (for whole project) - settings.gradle - gradle.properties ...
Измените настройки .gradle, добавив свою библиотеку в include
. Если вы используете собственный путь, как я, вам также нужно определить каталог проекта для нашей библиотеки. Целые настройки .gradle должны выглядеть следующим образом:
include ':app', ':PagerSlidingTabStrip'
project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')
5.1 Если вы столкнулись с ошибкой "Конфигурация по умолчанию", попробуйте это вместо шага 5,
include ':app'
include ':libs:PagerSlidingTabStrip'
В app/build.gradle
добавить наш проект библиотеки как зависимость:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(":PagerSlidingTabStrip")
}
6.1. Если вы выполните шаг 5.1, а затем следуйте этому вместо 6,
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(":libs:PagerSlidingTabStrip")
}
Если ваш проект библиотеки не имеет файла build.gradle
, вам необходимо создать его вручную. Вот пример этого файла:
apply plugin: 'com.android.library'
dependencies {
compile 'com.android.support:support-v4:21.0.3'
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
}
}
}
Кроме того, вы можете создать глобальную конфигурацию для своего проекта, которая будет содержать версии SDK и создавать инструменты для каждого модуля, чтобы сохранить согласованность. Просто отредактируйте файл gradle.properties
и добавьте строки:
ANDROID_BUILD_MIN_SDK_VERSION=14
ANDROID_BUILD_TARGET_SDK_VERSION=21
ANDROID_BUILD_TOOLS_VERSION=21.1.3
ANDROID_BUILD_SDK_VERSION=21
Теперь вы можете использовать его в своих файлах build.gradle
(в модулях приложений и библиотек), как показано ниже:
//...
android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
}
}
//...
Вот и все. Просто нажмите, синхронизируйте проект с помощью значка Gradle . Ваша библиотека должна быть доступна в вашем проекте.
Google I/O 2013 - Новая система Android SDK Build System - отличная презентация о создании приложений для Android с помощью Gradle Build System: As Ксавье Дюкроэт сказал:
Android Studio - это все, что нужно для редактирования, а также для отладки и профилирования. Это не о строительстве больше.
В начале это может быть немного запутанным (особенно для тех, кто работает с Eclipse и никогда не видел ant - как и я;)), но в конце Gradle дает нам отличные возможности и стоит изучить эту систему сборки.
Вот визуальное руководство:
Обновить для Android Studio 0.8.2:
В Android Studio 0.8.2 перейдите в Структура проекта → в Модулях, просто нажмите кнопку плюс и выберите Импортировать существующий проект и import actionbarsherlock
. Затем синхронизируйте файлы Gradle.
Если вы столкнулись с ошибкой
Ошибка. Версия SDK Build Tools (xx.x.x) слишком низкая. минимальный требуется yy.y.y
просто откройте файл build.gradle
в каталоге actionbarsherlock
и обновите buildToolsVersion
до предлагаемого.
android {
compileSdkVersion 19
buildToolsVersion 'yy.y.y'
Файл меню → Структура проекта...:
Модуль → Модуль импорта
После импорта библиотечного модуля выберите модуль проекта и добавьте зависимость:
И затем выберите импортированный модуль:
Используйте меню Файл → Структура проекта → Модули.
Я начал использовать его сегодня. Это немного отличается.
Для Sherlock, возможно, вы хотите удалить их тестовый каталог или добавить файл junit.jar
в путь к классам.
Чтобы импортировать библиотеку с помощью gradle, вы можете добавить ее в раздел dependencies
вашего build.gradle
(модуль один).
например.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.0'
compile 'com.actionbarsherlock:actionbarsherlock:[email protected]'
}
Android Studio меняется.
Существует раздел с именем "Открыть настройки модуля", если вы щелкните правой кнопкой мыши папку модуля в разделе проекта Android. Studio (я использую версию 0.2.10).
Я бы рассмотрел Зависимости, Android-библиотеки и Multi-Project setup необходимое чтение. Пожалуйста, уделите несколько минут.
В частности, в случае проекта библиотеки, отличного от jar, прочитайте следующий фрагмент из вышеприведенного источника:
ПроектыGradle также могут зависеть от других проектов gradle, используя многопроектную настройку. Настройка нескольких проектов обычно работает, когда все проекты являются вспомогательными папками заданного корневого проекта.
Например, для следующей структуры:
MyProject/
+ app/
+ libraries/
+ lib1/
+ lib2/
Мы можем идентифицировать 3 проекта. gradle будет ссылаться на них со следующим именем:
:app
:libraries:lib1
:libraries:lib2
У каждого проекта будет свой собственный build.gradle, объявляющий, как он создается. Кроме того, будет файл под названием settings.gradle в корневом объявлении проектов. Это дает следующую структуру:
MyProject/
| settings.gradle
+ app/
| build.gradle
+ libraries/
+ lib1/
| build.gradle
+ lib2/
| build.gradle
Содержимое настроек .gradle очень просто:
include ':app', ':libraries:lib1', ':libraries:lib2'
Определяет, какая папка фактически представляет собой проект gradle.
Проект приложения, вероятно, будет зависеть от библиотек, и это делается путем объявления следующих зависимостей:
dependencies {
compile project(':libraries:lib1')
}
Просьба обратить внимание на то, что GUI для Android Studio мало или вообще не используется, чтобы это произошло.
В настоящее время я использую git подмодули, чтобы связать вложенную библиотеку с фактической библиотекой git repo, чтобы избежать беспорядка зависимости.
Я только что нашел более простой способ (вместо того, чтобы писать непосредственно в файлы .gradle).
Это для Android Studio 1.1.0.
Файл меню → Новый модуль...:
Нажмите "Импортировать существующий проект".
Выберите нужную библиотеку и нужный модуль.
Нажмите "Готово". Android Studio импортирует библиотеку в ваш проект. Он будет синхронизировать файлы gradle.
Добавьте импортированный модуль в зависимости от проекта.
Щелкните правой кнопкой мыши на папке приложения → Откройте настройки модуля → перейдите на вкладку зависимостей → Нажмите кнопку "+" → нажмите "Зависимость модуля".
Затем модуль библиотеки будет добавлен в зависимости от проекта.
???
Profit
Самый простой способ включить проект внешней библиотеки (например, включить библиотеку Facebook, которая хранится в одной папке в папке зависимостей):
В настройках .gradle add
include ':facebook'
project(':facebook').projectDir = new File(settingsDir, '../dependencies/FacebookSDK')
В разделе build.gradle зависимостей добавьте
compile project ('facebook')
Осталось только синхронизировать проект с gradle файлами.
Простой способ добавить JAR файл в качестве библиотеки в проект Android Studio:
a) Скопируйте файлы *.jar
b) Вставьте в каталог libs под ваши проекты:
c) Добавить в build.gradle:
dependencies {
...
compile files('libs/ScanAPIAndroid.jar', 'libs/ScanAPIFactoryAndroid.jar', .., ..)
}
b) Если ваш проект из примера com.example.MYProject и библиотеки com.example.ScanAPI имеет такое же пространство имен com.example, Android Studio проверит вашу сборку и создаст все необходимые изменения в вашем проект. После этого вы можете просмотреть эти параметры в меню Файл → Структура проекта.
c) Если ваш проект и библиотеки имеют другое пространство имен, вам нужно щелкнуть правой кнопкой мыши по библиотеке и выбрать опцию "Добавить в библиотеку" и выбрать тип, который вам нужен.
Помните, что опция "Структура проекта" не выполняет никаких автоматических изменений в "build.gradle" в текущей версии Android Studio (0.2.3). Возможно, эта функция будет доступна в следующих версиях.
Соответствующий файл build.gradle будет обновлен автоматически.
Откройте файл build.gradle и добавьте новое правило сборки в закрытие зависимостей. Например, если вы хотите добавить Сервисы Google Play, раздел зависимостей вашего проекта будет выглядеть примерно так:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services:6.5.+'
}
На панели "Проект" Control + щелкните модуль, к которому вы хотите добавить зависимость, и выберите "Открыть настройки модуля".
Выберите вкладку Зависимости, а затем кнопку + в левом нижнем углу. Вы можете выбрать один из следующих вариантов:
Затем вы можете ввести дополнительную информацию о зависимости, которую вы хотите добавить в свой проект. Например, если вы выбираете Зависимость от библиотеки, Android Studio отображает список библиотек, которые вы можете выбрать.
После того, как вы добавили свою зависимость, проверьте файл build.gradle уровня модуля. Он должен был автоматически обновиться, чтобы включить новую зависимость.
В проекте, в который вы хотите добавить проект внешней библиотеки, перейдите в меню Файл → Новый → * Импортировать новый модуль **, перейдите к проекту библиотеки, который вы хотите добавить в свой проект, выберите для добавления модуля "библиотека" в ваш проект. Вы получите settings.gradle в своих проектах, кроме приложения, включенной библиотеки, что-то вроде этого:
include ':app', ':library'
Добавьте в build.gradle(Module: app) в разделе зависимостей:
Скомпилировать проект (': библиотека')
Перестройте проект, и это все.
* Вы можете добавить столько библиотек (модулей), сколько захотите. В этом случае в settings.gradle у вас будет:
include ':app', ':lib1', ':lib2', ...
А в build.gradle вам понадобится:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Some other dependencies...
compile project(':lib1')
compile project(':lib2')
...
}
Если вам нужен доступ к ресурсам проекта библиотеки (как и с АБС), убедитесь, что вы добавили проект библиотеки/модуль как "зависимость модуля" вместо "Библиотека".
Вы можете сделать это легко. Зайдите в меню Файл → Создать → Импортировать модуль...:
Найдите каталог, в котором находится модуль. Нажмите Готово:
Перейдите в структуру проекта и добавьте зависимость модуля:
Примечание. Если вы получили ошибку SDK, обновите ее.
Редактирование зависимостей библиотеки через графический интерфейс не рекомендуется, так как это не записывает эти изменения в файл build.gradle. Таким образом, ваш проект не будет построен из командной строки. Мы должны отредактировать файл build.gradle следующим образом.
Например, для следующей структуры:
MyProject/
Мы можем выделить три проекта. Gradle будет ссылаться на них со следующими именами:
Проект приложения, вероятно, будет зависеть от библиотек, и это делается путем объявления следующих зависимостей:
dependencies {
compile project(':libraries:lib1')
}
Чтобы добавить к ответу: Если в IDE не отображается какая-либо ошибка, но когда вы пытаетесь скомпилировать, вы получаете что-то вроде:
No resource found that matches the given name 'Theme.Sherlock.Light'
Ваш проект библиотеки, вероятно, скомпилирован как проект приложения. Чтобы изменить это, перейдите к:
Файл меню → Структура проекта → Границы → [Имя библиотеки] → Проверить "Модуль библиотеки".
Первый способ Это работает для MacBook.
Сначала выберите файл builder.gradle в качестве экрана:
Добавьте зависимости, например, на выбранном экране:
Выберите проект синхронизации.
Если вы получаете ошибку, такую как "Project with path": подпись-pad 'не может быть найдена в проекте': app '', то, пожалуйста, используйте второй способ:
Выберите меню Файл → Создать → Модуль импорта...:
После нажатия кнопки "Импортировать модуль"
укажите путь библиотеки как мой путь к MacBook:
Нажмите "Готово". Теперь добавлена ваша библиотека.
После импорта модуля ABS (из файлa > Структура проекта) и убедитесь, что он имеет Android 2.2 и Support Library v4 в качестве зависимостей, я все еще получал следующую ошибку, поскольку вы @Alex
Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.DarkActionBar'
Я добавил новый импортированный модуль в зависимость от моего основного модуля приложения и устранил проблему.
Просто добавьте имя библиотеки в блок зависимостей вашего файла build.gradle приложения.
dependencies {
// ...
implementation 'com.example:some-library:1.0.0'
}
Обратите внимание, что теперь вы должны использовать implementation
, а не compile
. Это ново для Android Studio 3.0. См. этот Q & A для объяснения разницы.
Чтобы решить эту проблему, вам просто нужно добавить путь ресурса abs к файлу сборки проекта, как показано ниже:
sourceSets {
main {
res.srcDirs = ['src/main/res','../../ActionBarSherlock/actionbarsherlock/res']
}
}
Итак, я снова компилирую без ошибок.
Если у вас установлен Android Studio.0.4.0, вы можете создать новую папку в своем пути сборки, YourApp/libraries
. Скопируйте файл JAR. Там, щелкните правой кнопкой мыши по нему и "Добавить как библиотеку". Теперь у вас есть всплывающее окно. Просто выберите свой каталог и нажмите OK, и это.
https://www.dropbox.com/s/1e3eteu3h0pmkf7/Android%20studio%20_doc.doc?dl=0 - ссылка Dropbox о том, как добавить проект JAR файла и библиотеки в последнюю версию Android Studio 1.0.1.
См. документацию со скриншотами. Это очень удобно для нового пользователя.
Просто импортируйте проект библиотеки Android в качестве модуля и в Build.gradle.
Применить плагин: 'com.android.library'
После этого выполните следующие действия:
Я нашел решение. Это так просто. Следуйте инструкциям froger_mcs.
Убедитесь, что вы сделали папку src исходной папкой в структуре проекта → Модули (источники).
У меня была другая причина проблемы, поэтому для людей:
repositories {
mavenCentral()
}
измените mavenCentral() на jcenter() и добавьте
allprojects {
repositories {
jcenter()
}
}
Откройте файл приложения модуля сборки gradle и добавьте свою зависимость. Если вы загружаете библиотеку, просто импортируйте и создайте ее как gradle.
В противном случае добавьте репозитории в боковое приложение gradle:
repositories {
maven { url 'http://clinker.47deg.com/nexus/content/groups/public' }
}
Первые репозитории будут загружать библиотеку для вас.
И скомпилируйте загруженную библиотеку:
compile ('com.fortysevendeg.swipelistview:swipelistview:[email protected]') {
transitive = true
}
Если вы создаете библиотеку, вам просто нужно импортировать проект как новый импортный модуль.
В принципе, вы можете включать файлы JAR тремя различными способами. Последняя - это удаленная библиотека, которая использует https://bintray.com/ jcenter онлайн-репозиторий. Но если вы сделаете это одним из двух других способов, файл JAR будет физически включен в ваш проект. Прочтите эту ссылку fooobar.com/questions/12322/... для получения дополнительной информации. В этой статье я объяснил, как импортировать ваш JAR файл в студию Android, и я объяснил все возможные способы.
В общем, если это так (локальный адрес), они загружаются, и эти файлы JAR физически находятся в проекте:
Но если это интернет-адрес, подобный этому, это удаленные библиотеки (часть bintray.com jcenter), и они будут использоваться удаленно:
Надеюсь, это поможет.
Пример успешного добавления другой библиотеки (PullToRefresh). Также работает для ABS libproject.
Для Android Studio:
Нажмите на Build.gradle(модуль: приложение).
И добавьте для
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/commons-io-2.4.jar')
}
и в вашем каталоге "app" создайте каталог "libs". Добавьте файл yourfile.jar:
Наконец, скомпилируйте Gradle Files:
В Android Studio перейдите в папку с внутренними папками и откройте файл build.gradle. Здесь вы увидите зависимости {}. Внутри вы можете добавить проект библиотеки и синхронизировать. Теперь после синхронизации библиотеки он будет добавлен в ваш проект, и вы можете использовать его функции и классы в своем проекте.
Я также столкнулся с той же проблемой, после чего я сделал следующее.
Я импортирую проект библиотеки в свою среду AndroidStudio в качестве модуля, используя меню Файл → Меню модуля импорта
Затем я пошел в свой основной модуль, в котором я хочу, чтобы проект библиотеки был зависимым проектом
Щелкните правой кнопкой мыши на основном модуле (в моем случае его имя приложение) → откройте настройки модуля → перейдите на вкладку зависимостей → нажмите кнопку + (вы получите его в правой части окна) → щелкните по зависимости модуля → выберите проект библиотеки из списка
Примените изменения и нажмите кнопку OK.
Это сработало для меня. Надеюсь, это тоже поможет другим.
Следуйте этому небольшому учебнику, который поможет вам
Добавьте это в свой файл Gradle сборки
dependencies {
implmentation 'com.jakewharton:butterknife:9.0.0'
}