Допустим, мы хотим 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:
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:
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
Post a Comment