Android-библиотеки в Android Studio
Кто-нибудь понял/узнал, как Android-библиотеки предназначены для работы в студии Android?
Я пока не смог найти документацию (документация на Android Developer Site невероятно голая), и я наблюдаю, что в зависимости от того, как я создаю проект библиотеки, я получаю совершенно разные результаты.
Если я импортирую библиотеку из Eclipse (сначала следуя рекомендациям на веб-сайте для экспорта в Gradle), я получаю новый проект + модуль, содержащий проект библиотеки. Это не кажется совершенно правильным (intellij project = рабочее пространство eclipse), и попытки скомпилировать/сделать это в intellij приводят к множеству ошибок (проект библиотеки не может найти библиотеки поддержки Android).
Если я создаю новый проект с нуля с помощью библиотечного модуля, тогда я получаю проект библиотеки андроида с файлом build.gradle.
Если я создаю новый модуль из проекта (используя правый щелчок по проекту), я получаю библиотеку Android, созданную с помощью Ant. Это компилируется отлично, но кажется очень странным. Разумеется, мы не должны использовать Ant для Android-библиотек в android Studio? Кстати, создание нового библиотечного модуля с использованием "Файл" > "Новый модуль", похоже, не работает. Вместо этого он создает новое приложение.
Кто-нибудь собрал любую информацию, чтобы понять это? Я также не нашел места, где можно указать, какие библиотеки следует использовать в каких модулях приложения. Я понимаю, что это предварительный выпуск, но я с трудом верю, что основная функция, такая как Android-библиотеки, настолько плохо поддерживается. Что мне не хватает?
Обновление 2014-04-09:
Итак, на этой неделе я взял новый раунд с Android Studio. И хотя проблемы сейчас отличаются от того, когда я изначально писал это, это - совершенно невероятно - все еще большая проблема. Я до сих пор не нашел хорошего объяснения использования Android-библиотек в нескольких проектах в AS (включая вложенные библиотеки). Некоторые из предложений, которые я видел, рекомендуют копировать код во множество мест, что полностью разрушает цель создания библиотеки.
Я просто не понимаю, что думают Google с помощью Android Studio... Жаль, потому что это похоже на отличный инструмент, но отсутствие интуитивного управления чем-то таким основным, как повторное использование кода, для меня большая проблема (не обращая внимания на то, что кодирование специально для Android становится все менее привлекательным по сравнению с постоянно улучшающимися инструментами разработки кросс-платформенных инструментов).
Ответы
Ответ 1
Ради кого-то, кто ударил по этому поводу, вот что я делаю, чтобы "решить" эту проблему. Это очень далеко от элегантного решения IMO, но оно ближе всего к хорошему решению, которое я нашел для обработки моей проблемы (повторное использование Android-библиотек) в Android Studio с помощью Git.
Основная идея заключается в использовании подмодулей Git. Каждая библиотека имеет собственный репозиторий Git.
- Создайте myLibrary как модуль, а затем передайте его в репозиторий.
- Из корневого репозитория проекта я делаю
git submodule add
для извлечения библиотеки.
- В settings.gradle я добавляю:
include ':myLibrary'
и синхронизирую проект.
- Настройки модуля → Зависимости → + Зависимость модуля и добавьте зависимости к модулю, если это необходимо.
Это далека от простой элегантности работы с библиотеками Android в Eclipse, но она работает после моды. Что нужно помнить:
- помните, чтобы Git тянуть часто, чтобы подбирать изменения (а затем фиксировать основной проект для синхронизации с изменениями подмодуля).
- помните Git нажмите из каталога модуля на удаленный, если вы внесли изменения в библиотеку.
Встроенный VCS должен помочь здесь, но для меня это было довольно неприятно, поэтому я предпочитаю просто делать это сам с терминала сейчас.
Надеюсь, что это поможет.
Ответ 2
Если вы хотите использовать дополнительные библиотеки в проекте Android Studio:
с
compile fileTree(dir: 'libs', include: '*.jar')
Если он по-прежнему не работает, перейдите в корневую папку вашего проекта с помощью нашего терминала и запустите команду gradlew clean
.
Ответ 3
Intellij отличается от Eclipse тем, что ваше "рабочее пространство" предназначено только для одного "проекта". Каждый проект состоит из нескольких модулей. И эти модули сами могут иметь собственный "проект/приложение/библиотека".
Таким образом, модуль похож на эквивалент проекта Eclipse.
Перейдите к: Файл- > Структура проекта- > Модули
И добавьте библиотеку Android в качестве модуля, вы можете заявить, что она находится в библиотеке Android и делает ее зависимой от вашего "проекта" (модуля приложения).
Ответ 4
Multi Project Setup - это то, что вы ищете, я думаю. Вначале я бы не стал уделять слишком много внимания материалам Android Studio. Сосредоточьтесь на правильном использовании файлов gradle, а затем "синхронизации" модуля для обновления Android Studio. (Мне пришлось перезапустить его порой для раздела "Варианты сборки", чтобы обновлять его новыми ароматами.)
@Xav предложил в ответ Google+ следующее:
Проект высокого уровня существует, если вы захотите добавить новые модули позже (проект библиотеки). Легче создать первый проект с одним модулем в первый раз, чем создать плоский проект и преобразовать его позже при добавлении модулей.
Две основные вещи, которые нужно указать, в вашем файле settings.gradle, вы бы указали следующие модули: app и: library; также используется плагин "android" для приложения, но плагин "android-library" должен использоваться для модулей библиотеки.
Если вы можете. /gradlew собрать из командной строки, тогда Android Studio должен обновиться с соответствующими настройками при следующем открытии проекта или синхронизации.
Ответ 5
В тот момент, когда вам нужно настроить ваш файл build.gradle
для использования баннеров с Android Studio или в конечном итоге со страшным NoClassDefException
во время выполнения. См. Мой здесь, чтобы узнать, как работать с jar libs. Вы также можете определить зависимости Maven прямо в этом build.gradle
, что очень удобно.
Ответ 6
Вставьте андроидную библиотеку в студию android. Если у вас есть представление о библиотеке, то добавьте непосредственно, например.
(это библиотека пикассо)
compile 'com.squareup.picasso:picasso:2.3.2'
Если вы хотите создать нашу собственную библиотеку, выполните следующие действия.
Теперь, наконец, ваша библиотека была создана, которую вы можете легко использовать.
- Нажмите Файл и затем нажмите Структура проекта
-
Нажмите вкладку Зависимости внутри маленького окна и нажмите кнопку "Зеленый цвет плюс".
-
И выберите зависимость модуля, которую вы можете увидеть в файле библиотеки.
-
выберите библиотеку и ok