Skip to main content

Android Support Library + Maven + Eclipse

Допустим, мы хотим ActionBar в нашем android приложении. Но минимальная версия, которую мы хотим поддерживать, 2.3, и никакого ActionBar там ещё нет. Android Support Library позволяет использовать некоторые новые компоненты в старых версиях. В данном случае нам нужна Android Support Library  v7 appcompat.

1. Такой dependency в репозитории нет. Maven Android SDK Deployer позволяет помещать в локальный репозиторий dependency из локальной Android SDK. Если мы разрабатываем для android-4.3, то можем сгенерировать артефакты только для этой версии:
mvn install -P 4.3
Кажется, для этого потребуется установить и версию sdk - 17. Если maven install упадет с ошибкой, то там будет написана причина.

Если зайти в локальный репозиторий, то там появятся артефакты в папке:
.m2\repository\android\support\compatibility-v7-appcompat\18

2. Подключим зависимости в pom.xml нашего app:
<dependency>
  <groupId>android.support</groupId>
  <artifactId>compatibility-v4</artifactId>
  <version>18</version>
</dependency>
<dependency>
  <groupId>android.support</groupId>
  <artifactId>compatibility-v7-appcompat</artifactId>
  <version>18</version>
  <type>apklib</type>
</dependency>
<dependency>
  <groupId>android.support</groupId>
  <artifactId>compatibility-v7-appcompat</artifactId>
  <version>18</version>
  <type>jar</type>
</dependency>


3. Если мы собираем проект из командной строки и закидываем apk на устройство, то этого нам достаточно. Но под Eclipse увидим ошибку:
dependency [имя.apklib] not found in workspace

ApkLib - тип успаковки для Android Library, содержащих ресурсы. Если библиотека состоит только из java-кода, то её упаковывают в jar, но если есть ресурсы, то типом упаковки будет apklib. Сам maven увидит и подключит эти зависимости. Но m2e-android так не умеет. Android Library Project должны быть в workspace как maven-проекты, чтобы m2e-android мог их подключить.

Чтобы создать проект в нашем workspace, можно использовать инструкцию Adding Support Libraries. После того, как мы импортировали проект, добавим ему maven nature в eclipse.
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>android.support</groupId>
  <artifactId>compatibility-v7-appcompat</artifactId>
  <version>18</version>
  <packaging>apklib</packaging>
  <name>compatibility-v7-appcompat</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <platform.version>4.3_r1</platform.version>
    <android.plugin.version>3.6.1</android.plugin.version>
  </properties>

<build>
  <finalName>${project.artifactId}</finalName>
  <sourceDirectory>src</sourceDirectory>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <version>${android.plugin.version}</version>
        <extensions>true</extensions>
      </plugin>
    </plugins>
  </pluginManagement>
  <plugins>
    <plugin>
      <groupId>com.jayway.maven.plugins.android.generation2</groupId>
      <artifactId>android-maven-plugin</artifactId>
      <configuration>
      <sdk>
        <platform>18</platform>
      </sdk>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.1</version>
      <configuration>
        <source>1.6</source>
        <target>1.6</target>
      </configuration>
    </plugin>
  </plugins>
</build>
</project>

GroupId и artefactId должны совпадать с тем, что мы подключили в pom.xml нашего главного приложения. Переименуем library проект в  compatibility-v7-appcompat (на всякий, без этого не работало). В главном приложении Properties -> Android. В нижней части окна добавим нашу только созданную библиотеку.

Comments

Popular posts from this blog

Блочный, строчный, ...

Сборник советов: 1. Прижать элемент к нижнему краю контейнера: 2 . Две колонки: 3 . Что означает символ ">" в селекторе? Означает, что будут выбраны только прямые потомки. По-умному, direct descendant combinator. Иными словами, если есть: То "div a {color: blue;}" изменит цвет всех ссылок, а "div > a {color: blue;}" - только первой и третьей. 4 . TODO

Hibernate

1. Hibernate Session . Javadoc называет её главным интерфейсом между java-приложением и Hibernate. Иногда её называют единицей работы или логической транзакцией. Основная функция сессии - обеспечить операции создания, чтения, удаления объектов. Объекты могут находиться в одном из 3 состояний (см. 2) Сессия создается с помощью SessionFactory. SessionFactory знает конфигурацию ORM, её внутреннее состояния immutable. При вызове Configuration().configure() загружается файл hibernate.cfg.xml. После того, как конфигурация загружена, можно изменить настройки программно. Данные корректировки возможны только до создания экземпляра фабрики сессий. // Initialize the Hibernate environment Configuration cfg = new Configuration().configure(); // Create the session factory ServiceRegistryBuilder srb = new ServiceRegistryBuilder(); ServiceRegistry sr = srb.applySettings(cfg.getProperties()).buildServiceRegistry(); SessionFactory factory = cfg.buildSessionFactory(sr); // Obtain the new session obj...

Первые шаги в Selenium

Цель расплывчата: понять и сделать хоть что-нибудь =) Selenium Selenium - группа продуктов. Отличное описание в статье Что такое Selenium? Selenium IDE - плагин для Firefox, позволяет записать тест, выполняя действия в браузере. Казалось бы, Selenium WebDriver должен дать больше возможностей: всё таки не из графического интерфейса тесты пишем, а с помощью языка программирования, но интересная мысль в другой статье того же автора  Что такое Selenium WebDriver? : "... WebDriver не имеет прямого отношения к тестированию. Он всего лишь предоставляет автотестам доступ к браузеру. На этом его функции заканчиваются.Структурирование, группировку и запуск тестов, а также генерацию отчётов о тестировании, обеспечивает фреймворк тестирования, такой как JUnit или TestNG для Java, .."  Локаторы Выбрать элемент на странице можно используя локаторы. Локаторы (в Selenium IDE в поле target) используют DOM, XPath или CSS (или просто ищут по id/name). Полезное: XPath: XML Path La...