Должен ли я использовать Maven для Android-приложения?

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

Я начал разрабатывать приложение для Android, и я обнаружил, что плагин Android для eclipse ужасно хорош. Тем не менее, все представленные примеры не являются maven-проектами, поэтому я не знаю, будет ли я использовать maven, я все равно получаю все функциональные возможности от Android-плагина или есть ли недостаток от использования Maven.

Итак, вопросы:

  • Все функции Android-плагина для eclipse все еще работают?
  • Это будет сложнее, чем использование обычной сборки (я считаю, что это Ant, но не обязательно)
  • Любые другие недостатки, например. размер файла конечного приложения (Maven, как правило, объединяет много вещей) или трудности с получением последних библиотек в maven-репозитории (что, вероятно, отличается от Android).

Не указывайте на поддержку maven для проектов Android

Мне хотелось бы получить ответ от опытных разработчиков. Я уже знаю, что можно использовать maven для Android-приложения. Все, что мне нужно знать, должен ли я использовать его.

Ответ 1

Мои текущие задачи моей команды - разработать приложение для Android. Поскольку это небольшое приложение, а также какой-то прототип, мы решили оценить Maven и плагин Android Eclipse.

Вкратце: После того, как два разработчика провели три дня, мы не смогли получить функциональность плагина Android Eclipse в нашем проекте Maven.

  • Класс R не обновлялся в соответствии с нашими ресурсами
  • Нам не удалось запустить приложение непосредственно из Eclipse в эмуляторе и/или подключенном устройстве.

Из-за этих проблем, которые сдерживали наше развитие, мы решили разработать приложение без Maven. Но если кто-то из вас знает, как исправить эти проблемы, я хотел бы услышать решение!

Ответ 2

Если вам нужны быстрые тесты, вы почти вынуждены использовать maven. В то время как robolectric - это путь. И они сказали, что Roboletric, вероятно, проще настроить через maven под Eclipse (они используют IDEA).

Тем не менее, вы читали этот пост или который? И какое сообщение об ошибке вы получили?

Типичные вещи, которые я сделал неправильно:

  • использовать maven >= 3.0.3! И избегайте этой встроенной вещи в eclipse. (Это было необходимо только для robolectric, если я правильно помню)
  • используйте ~/.m2/settings.xml, как описано на странице robolectric, чтобы настроить путь android
  • укажите свой Android файл sdk также правильно в local.properties и в разделе "Настройки" → Android → местоположение SDK.
  • Далее прочитайте this и который или просто попробуйте mavenized robolectric сам пример, который работал у меня. Импортируйте его как существующий проект maven.
  • Установите необходимый sdk (в моем случае 2.2_r3) через maven-android-sdk-deployer и

    export ANDROID_HOME=/path/to/android/sdk
    mvn install -P 2.2
    
  • И я упомянул об этом странном инструменте: m2e-android - не знаю, зачем так много всего нужно с Eclipse.. здесь вы можете установить его с помощью обновлений программного обеспечения http://rgladwell.github.com/m2e-android/updates/master/m2e-android/

Надеюсь, я правильно все запомнил. Удачи!

Update:

Переход на обычный Android-материал без maven под Eclipse, так как среда ID делает странные вещи: http://groups.google.com/group/robolectric/browse_thread/thread/ac814076c40d9df1

Но приятная вещь в этом приключении Maven заключается в том, что теперь я могу легко тестировать и отлаживать свои проекты через NetBeans:)

Ответ 3

Как мы все знаем, Android Devolopment перенесена на Android Studio из Eclipse.

Система сборки Android Studio состоит из Android-плагина для Gradle. Gradle - это расширенный инструментарий сборки, который управляет зависимостями и позволяет вам определять пользовательскую логику сборки.

Система сборки не зависит от Android Studio, поэтому вы можете вызывать ее из Android Studio или из командной строки.

Система сборки Android Studio поддерживает удаленные зависимости Maven. Как известно, Maven - это популярный инструмент управления проектами программного обеспечения, который помогает организовывать зависимости проектов с использованием репозиториев.

Вы можете создавать свои Android-приложения из командной строки на вашем компьютере из Android Studio, тем самым избегая беспорядка плагинов, как в Eclipse.

Просмотрите этот учебник по созданию приложений для Android с Maven.

Смотрите для больше о Gradle build

Ответ 4

Я рекомендую избегать Maven для профессиональной разработки на Android. Вот почему:

  • Google инвестирует время в поддержку Android Studio, интегрированного с Gradle. Так что maven - это дополнительная работа с самого начала.
  • Если вам нужно использовать Maven (например, управлять зависимыми библиотеками), то Gradle может использовать плагин Maven. См. https://docs.gradle.org/current/userguide/maven_plugin.html
  • Сделав maven основным инструментом сборки, вы загрузите огромное количество зависимостей, которые вам не нужны, и вы не знаете, откуда они взялись. Это противоречит понятию, что для вашего Android-приложения вам идеально нужен только ваш код и платформа Android. Другими словами, вы задействуете множество библиотек/кода, которые вам не нужны.

Короче говоря, использование maven в качестве инструмента для создания Android добавляет гораздо больше работы, чем это необходимо, и создает кошмар управления (IMO).

Попробуйте это, чтобы проиллюстрировать:

  • Нагрейте сковородку на плите.
  • Держите сырое яйцо. Скажите "Это ваше приложение для Android".
  • Взломайте яйцо в кастрюлю.
  • Скажите: "Это ваше приложение для Android на maven-with-rats-nest-dependency-tree-and-unknown-code-downloads-that-you-don't-need-anyway."
  • Подождите, пока яйцо будет гореть до хрустящей корочки.
  • Скажите: "Это ваше приложение для Android, когда сборка maven упаковала бесполезную или плохую библиотеку с вашим Android-приложением".

Ответ 5

Я смог использовать maven для разработки приложений Android с помощью Android Development Tools для Eclipse (Kepler) и Android для Maven Eclipse 1.0.1 (m2e-android). Следуйте этим инструкциям http://rgladwell.github.io/m2e-android/. После того, как вы создали свой новый проект с архетипом quickstart для Android, измените свой pom.xml. Добавьте версию платформы Android. Eclipse (m2e) сообщит об ошибке на pom.xml в объявлении android-maven-plugin, чтобы исправить эту проблему после ответа alexander в Ошибка в файле maven pom xml: Создание проекта Android. Затем обновите проект maven, используя eclipse, и это должно быть оно.

Ответ 6

Из моего собственного опыта в Intellij. Я использовал Maven как инструмент автоматизации сборки для моего процесса разработки Android. Я начал изучать его с помощью "Разработка приложений Android с Maven" из Packtpub.