Статьи

Разработка Android с Maven — учебник для начинающих

Если вы являетесь разработчиком Java и хотите писать программное обеспечение для мобильных устройств, Android, без сомнения, является самой доступной платформой мобильной разработки. Причина этого проста: вы пишете свои приложения на Java, используя инструменты, с которыми вы уже знакомы (особенно Eclipse). Из-за этого кривая обучения намного мягче, чем обучение разработке на IOS для iPhone или iPad, что также включает изучение совершенно нового языка. И, как мы увидим, вы также можете воспользоваться всеми замечательными инструментами и техниками (модульное тестирование, автоматические сборки, непрерывная интеграция и т. Д.), К которым вы привыкли в среде разработки Java.

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

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

Тем не менее, хороший плагин Eclipse не создает процесс автоматической сборки, и мне все еще не хватает многих функций Maven, таких как декларативное управление зависимостями и процесс чистого выпуска. К счастью, для этого есть плагин Maven! К сожалению, немного сложно заставить эти два инструмента хорошо играть вместе. В этой статье я познакомлю вас с основами использования Maven с Android, указав несколько советов и подсказок по пути.

Начиная

Я предполагаю, что вы установили Android SDK на свой компьютер, а также плагин Eclipse — если нет, загрузите SDK с веб-сайта Android и установите его в соответствии с инструкциями на сайте (см. Сайт Android SDK ), и затем установите плагин Eclipse . Вам также нужно будет установить нужные вам версии платформ (подробнее см. Здесь ). Пока что все это стандартная практика для классической разработки под Android с использованием Eclipse.

После того, как вы настроили Eclipse правильно, вы можете создать новый проект Android для игры (File-> New-> Android Project). Опять же, есть много примеров и хороших книг о том, как это сделать, поэтому я не буду останавливаться на деталях здесь.

Android и Maven

Eclipse — это хорошо, но серьезный проект разработки на Java нуждается в автоматическом сценарии сборки; мы будем использовать Maven. Чтобы заставить Android работать с Maven, вам нужно сделать пару дополнительных шагов. Прежде всего, установите переменную среды ANDROID_HOME, чтобы она указала на установку Android SDK, например

export ANDROID_HOME=/opt/android-sdk-linux

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

Вам также следует добавить группу плагинов Android в файл settings.xml, чтобы вы могли проще вызывать плагин Android из командной строки:

<pluginGroups>
<pluginGroup>com.jayway.maven.plugins.android.generation2</pluginGroup>
</pluginGroups>

Убедитесь, что вы создали эмулятор в Android AVD Manager, если вы этого еще не сделали. Используемое здесь имя — это имя, которое вы указываете в конфигурации плагина Android в разделе avd .

Затем вам нужно настроить файл Maven pom.xml для вашего проекта. Самый простой подход на данный момент — просто создать файл pom.xml вручную в каталоге проекта. Пример такого файла pom.xml показан здесь:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wakaleo.training.android.qotd</groupId>
<artifactId>QuoteOfTheDay</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>apk</packaging>
<name>QuoteOfTheDay</name>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android-test</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.5</version>
<scope>test</scope>
</dependency>

</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>maven-android-plugin</artifactId>
<version>2.6.0</version>
<configuration>
<sdk>
<platform>8</platform>
</sdk>
<emulator>
<avd>em22</avd>
</emulator>
<deleteConflictingFiles>true</deleteConflictingFiles>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
</configuration>
<extensions>true</extensions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
</plugins>
</build>
</project>

В этом файле pom.xml есть несколько интересных вещей. Во-первых, тип упаковки apk , что указывает на то, что это приложение для Android. В зависимостях библиотеки android и android-test перечислены как предоставленные , так как они будут доступны на устройстве. И мы переопределили исходный каталог и тестовый каталог по умолчанию, чтобы хорошо играть с настройкой проекта Android Eclipse.

Теперь эта помпа позволит вам выполнять ряд общих задач Android из командной строки через Maven. Например, создать ваше приложение просто: просто запустите mvn clean install , как вы это сделали бы с любым другим проектом. Чтобы развернуть приложение в эмуляторе, вам нужно будет запустить эмулятор либо из Android AVD Manager, либо из командной строки. Чтобы запустить эмулятор из командной строки, вы можете запустить mvn android: emulator-start . Для правильного запуска эмулятора может потребоваться минута или две, поэтому наберитесь терпения:

$ mvn android:emulator-start
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building QuoteOfTheDay 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-android-plugin:2.6.0:emulator-start (default-cli) @ qotd ---
[INFO] Android emulator command: /opt/android/android-sdk-mac_x86/tools/emulator -avd em22
unknown
[INFO] Starting android emulator with script: /var/folders/y+/y+a+wZ-jG6WKHEm9KwnSvE+++TI/-
Tmp-//maven-android-plugin-emulator-start.sh
[INFO] Waiting for emulator start:5000
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.836s
[INFO] Finished at: Thu Oct 28 14:34:40 NZDT 2010
[INFO] Final Memory: 8M/81M
[INFO] ------------------------------------------------------------------------

А чтобы развернуть приложение в эмуляторе, просто запустите mvn android: deploy :

$ mvn android:deploy
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building QuoteOfTheDay 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-android-plugin:2.6.0:deploy (default-cli) @ qotd ---
[INFO] /opt/android/android-sdk-mac_x86/tools/adb [install, -r, /Users/johnsmart/Projects
/Training/android/android-quote-of-the-day/quoteoftheday/target/qotd-0.0.1-SNAPSHOT.apk]
[INFO] 1068 KB/s (13169 bytes in 0.012s)
pkg: /data/local/tmp/qotd-0.0.1-SNAPSHOT.apk
Success
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.537s
[INFO] Finished at: Thu Oct 28 14:35:25 NZDT 2010
[INFO] Final Memory: 8M/81M
[INFO] ------------------------------------------------------------------------

 

Вернуться к Затмению

Теперь, когда вы можете создавать и развертывать приложения для Android с Maven, вам нужно, чтобы Eclipse пришел на вечеринку. Теперь нормальный способ активировать функции Maven в проекте — через меню «Maven -> Включить управление зависимостями». К сожалению, это не сработает сразу. Чтобы это работало, вам нужно установить плагин m2eclipse Android Integration , который в основном помогает m2eclipse и плагину Android Eclipse общаться друг с другом. Поэтому установите этот плагин, а затем включите Maven Dependency Management в своем проекте.

Теперь вы сможете запускать свой проект Android с поддержкой Maven, как если бы это был обычный проект Android Eclipse, используя «Запуск от имени приложения Android». Это запустит эмулятор и развернет ваше приложение или просто развернет его на работающем эмуляторе, если он доступен:

Теперь вы можете создавать, развертывать и запускать приложение для Android как в Eclipse, так и через Maven. Это открывает двери для автоматизированного задания по сборке, которое вы можете настроить на локальном CI-сервере.

В следующей части этой серии, посвященной разработке Android, мы рассмотрим автоматизацию модульных и интеграционных тестов в Android, а также то, как настроить Continuous Integration для вашего проекта Android с помощью Hudson. Оставайтесь в курсе!

 

От http://weblogs.java.net/blog/johnsmart/archive/2010/11/01/android-development-maven-primer