Подтвердить что ты не робот

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 становится все менее привлекательным по сравнению с постоянно улучшающимися инструментами разработки кросс-платформенных инструментов).

4b9b3361

Ответ 1

Ради кого-то, кто ударил по этому поводу, вот что я делаю, чтобы "решить" эту проблему. Это очень далеко от элегантного решения IMO, но оно ближе всего к хорошему решению, которое я нашел для обработки моей проблемы (повторное использование Android-библиотек) в Android Studio с помощью Git.

Основная идея заключается в использовании подмодулей Git. Каждая библиотека имеет собственный репозиторий Git.

  • Создайте myLibrary как модуль, а затем передайте его в репозиторий.
  • Из корневого репозитория проекта я делаю git submodule add для извлечения библиотеки.
  • В settings.gradle я добавляю: include ':myLibrary' и синхронизирую проект.
  • Настройки модуля → Зависимости → + Зависимость модуля и добавьте зависимости к модулю, если это необходимо.

Это далека от простой элегантности работы с библиотеками Android в Eclipse, но она работает после моды. Что нужно помнить:

  • помните, чтобы Git тянуть часто, чтобы подбирать изменения (а затем фиксировать основной проект для синхронизации с изменениями подмодуля).
  • помните Git нажмите из каталога модуля на удаленный, если вы внесли изменения в библиотеку.

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

Надеюсь, что это поможет.

Ответ 2

Если вы хотите использовать дополнительные библиотеки в проекте Android Studio:

  • Скопируйте библиотеку .jar в папку libs в своем проекте.
  • Щелкните правой кнопкой мыши на библиотеке и выберите "Добавить как библиотеку"
  • В build.gradle заменить

    скомпилировать файлы ('libs/android-support-v4.jar')

с

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'

Если вы хотите создать нашу собственную библиотеку, выполните следующие действия.

  • Нажмите меню "Файл"
  • Выберите "Новый модуль" и выберите "Библиотека Android".

  • Объявить имя библиотеки и имя пакета.

Теперь, наконец, ваша библиотека была создана, которую вы можете легко использовать.

  • Нажмите Файл и затем нажмите Структура проекта
  • Нажмите вкладку Зависимости внутри маленького окна и нажмите кнопку "Зеленый цвет плюс".

  • И выберите зависимость модуля, которую вы можете увидеть в файле библиотеки.

  • выберите библиотеку и ok