Android + eclipse + maven + acciónbarsherlock
He leído muchas cosas sobre actionbarsherlock, maven, android, pero ninguna de las soluciones que he visto funcionó para mí 🙁
Estoy seguro de que estoy bastante cerca de la solución, pero no entiendo y necesito ayuda 🙂
- Cómo utilizar maven en el estudio android
- Crear una dependencia gradle - eliminar el acceso a sus propias dependencias
- Excluir .jar de compilar en Android Studio con Gradle
- Android Crosswalk Lite - Integración con Android Studio
- Maven y Android - No se puede encontrar el símbolo
Así que aquí está mi problema, trato de crear un proyecto de maven android con una dependencia de Actionbarsherlock …. Parece bastante fácil, pero siempre he thoses errores
[2013-01-16 18:10:28 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; [2013-01-16 18:10:28 - greennfc-samples] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; [2013-01-16 18:10:50 - Dex Loader] Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description; [2013-01-16 18:10:50 - greennfc-samples] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description;
Aquí está mi configuración:
Eclipse Juno M2e 1.2.0 ADT 21 Maven 3.0.4
Aquí está el padre pom:
<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> <parent> <groupId>org.sonatype.oss</groupId> <artifactId>oss-parent</artifactId> <version>7</version> </parent> <groupId>com.greennfc.tools</groupId> <artifactId>greennfc</artifactId> <version>1.0.0-SNAPSHOT</version> <name>Green NFC - Parent</name> <description>Android Nfc library for an easer management of NFC features</description> <packaging>pom</packaging> <url>https://github.com/binomed/greennfc</url> <inceptionYear>2013</inceptionYear> <!-- <scm> <connection>scm:git:ssh://[email protected]/octo-online/robospice.git</connection> <url>git:ssh://[email protected]/octo-online/robospice.git</url> <developerConnection>scm:git:ssh://[email protected]/octo-online/robospice.git</developerConnection> <tag>HEAD</tag> </scm> --> <licenses> <license> <name>Apache 2</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <issueManagement> <system>Github Issue Tracker</system> <url>https://github.com/octo-online/robospice/issues</url> </issueManagement> <developers> <developer> <id>JFG</id> <name>Jean-Francois Garreau</name> <email>[email protected]</email> </developer> </developers> <!-- <mailingLists> <mailingList> <name>RoboSpice Forum/Mailinglist</name> <post>http://groups.google.com/group/robospice</post> <subscribe>http://groups.google.com/group/robospice/subscribe</subscribe> <unsubscribe>https://groups.google.com/group/robospice/subscribe</unsubscribe> </mailingList> </mailingLists> <ciManagement> <system>jenkins</system> <url>https://robospice.ci.cloudbees.com/job/Build%20RoboSpice/</url> </ciManagement> --> <modules> <!-- core library --> <module>greennfc-core</module> <!-- Base librairies elements --> <module>greennfc-filters</module> <!-- extensions --> <!-- Demo --> <module>greennfc-samples</module> </modules> <properties> <android.version>4.1.1.4</android.version> <android-platform.version>14</android-platform.version> <android-annotations.version>4.1.1.4</android-annotations.version> <android-support.version>r7</android-support.version> <android-maven-plugin.version>3.5.0</android-maven-plugin.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <github.global.server>github</github.global.server> <maven.javadoc.skip>true</maven.javadoc.skip> </properties> <!-- TODO : remove this when android maven plugin 3.4.2 is out --> <pluginRepositories> <pluginRepository> <id>oss.sonatype.org-jayway-snapshots</id> <name>Jayway OpenSource SNAPSHOTs on Sonatype.org</name> <url>http://oss.sonatype.org/content/repositories/jayway-snapshots/</url> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> <dependencyManagement> <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>annotations</artifactId> <version>${android-annotations.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>${android.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>android-test</artifactId> <version>${android.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>provided</scope> </dependency> <!-- https://stackoverflow.com/questions/5591811/ignoring-innerclasses-attribute-warning-is-killing-eclipse --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <!-- https://stackoverflow.com/questions/13040788/how-to-elimate-the-maven-enforcer-plugin-goal-enforce-is-ignored-by-m2e-wa --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <versionRange>[1.0.0,)</versionRange> <goals> <goal>enforce</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <versionRange>[1.0.0,)</versionRange> <goals> <goal>copy-dependencies</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>${android-maven-plugin.version}</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.7</version> <configuration> <links> <link>http://commons.apache.org/lang/api</link> <link>http://java.sun.com/j2se/1.5.0/docs/api</link> </links> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.2</version> </plugin> <!-- deploy artifacts to github for downloads --> <plugin> <groupId>com.github.github</groupId> <artifactId>downloads-maven-plugin</artifactId> <version>0.6</version> <configuration> <description>${project.version} release of ${project.name}</description> <override>true</override> <includeAttached>true</includeAttached> <includes> <include>${project.artifactId}-${project.version}.jar</include> </includes> </configuration> <executions> <execution> <goals> <goal>upload</goal> </goals> <phase>deploy</phase> </execution> </executions> </plugin> <!-- deploy javadoc and maven site to github --> <plugin> <groupId>com.github.github</groupId> <artifactId>site-maven-plugin</artifactId> <version>0.7</version> <configuration> <message>Creating site for ${project.version}</message> </configuration> <executions> <execution> <goals> <goal>site</goal> </goals> <phase>site</phase> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.0</version> <configuration> <reportPlugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <version>2.2</version> <configuration> <dependencyDetailsEnabled>true</dependencyDetailsEnabled> <dependencyLocationsEnabled>true</dependencyLocationsEnabled> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.7</version> </plugin> </reportPlugins> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.3.2</version> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> </configuration> </plugin> </plugins> </pluginManagement> </build> <profiles> <profile> <id>sign</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <properties> <maven.javadoc.skip>false</maven.javadoc.skip> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> </plugin> </plugins> </build> </profile> </profiles>
Y aquí está el pom de mi proyecto
<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> <parent> <groupId>com.greennfc.tools</groupId> <artifactId>greennfc</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>greennfc-samples</artifactId> <packaging>apk</packaging> <name>Green Nfc - Samples</name> <properties> <notificationcompat2.version>1.1.2</notificationcompat2.version> <actionbarsherlock.version>4.2.0</actionbarsherlock.version> <roboguice.version>2.0</roboguice.version> <robosherlock.version>1.4</robosherlock.version> <google.http.client.version>1.12.0-beta</google.http.client.version> <simplexmlserializer.version>2.6.6</simplexmlserializer.version> <jackson.version>1.9.9</jackson.version> </properties> <dependencies> <!-- Green Nfc dependencies --> <dependency> <groupId>com.greennfc.tools</groupId> <artifactId>greennfc-core</artifactId> <version>${project.version}</version> </dependency> <!-- Other libs --> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>${android-support.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>${actionbarsherlock.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>${actionbarsherlock.version}</version> <type>apklib</type> <scope>provided</scope> </dependency> </dependencies> <build> <sourceDirectory>src/</sourceDirectory> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <configuration> <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> <assetsDirectory>${project.basedir}/assets</assetsDirectory> <resourceDirectory>${project.basedir}/res</resourceDirectory> <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> <sdk> <platform>${android-platform.version}</platform> </sdk> <undeployBeforeDeploy>true</undeployBeforeDeploy> </configuration> <extensions>true</extensions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>
Aquí lo que intento:
Maven Android Project con Test Suite http://v.zasadnyy.com/blog/abs-maven-eclipse-integration/
Como proyecto de actionbarsherlock, estoy usando el jefe del repositorio git, copié el directorio de la biblioteca, lo pegué en la misma carpeta que mi proyecto padre y lo cambio de nombre de acuerdo a {groupId} – {artifactId} – {version}
Estoy realmente abierto a reiniciar desde cero y encontrar una manera de hacerlo bien porque no entiendo por qué no funciona … 🙁
Gracias de antemano por tu ayuda
- No se ha encontrado ningún complemento para el prefijo 'android' en el proyecto actual
- Pasa parámetro de perfil MAVEN de jenkins
- Cómo añadir dependencia a Android Studio
- La tarea "instalar" de plugin de Gradle Maven no funciona con el proyecto de la biblioteca de Android
- ¿Cómo conoce Android Studio sobre las nuevas versiones de dependencia?
- Cómo agregar biblioteca google play servicio en el estudio android con éxito
- Maven - lee el número de versión del archivo de propiedades
- Error con Maven Android: El POM para com.google.android.gms: google-play-services: jar: 13.0.0 falta, no hay información de dependencia disponible
Así es como lo arreglé. Es debido a que Maven intenta exportar sus dependencias cuando Eclipse también está exportando sus dependencias de Android:
- Proyecto-> Propiedades-> Java Build Path
- Vaya a la pestaña de pedido y exportación.
- Desactive la opción "Dependencias de Maven" para que no se exporten dos veces.
- Limpiar y tratar de ejecutarlo.
- Si todavía no funciona, también desmarque "Android Dependencies".
Tuve un problema muy similar con Maven , Eclipse y ActionBarSherlock . El problema es que la biblioteca de soporte se pone en la ruta de construcción dos veces, haciendo que el dexopt confundido acerca de las declaraciones múltiples.
Yo era capaz de deshacerse de uno de los lugares donde dexopt estaba encontrando la biblioteca de soporte cambiando el pom.xml
de ActionBarSherlock de
<dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> </dependency>
a
<dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <scope>provided</scope> </dependency>
Asegúrese de limpiar el proyecto después de guardar este cambio.
Usted necesita identificar qué dependencias en su pom.xml están incluyendo las clases que el compilador de Dalvik se está quejando sobre.
-
En eclipse, puede identificar a qué tipo de jar pertenece la clase problemática por Open Type (en mac Command-T).
-
A continuación, determinar qué dependencias transitivas a los frascos que tiene buscando cada dependencia directa que tiene en maven central . Y mirando en los proyectos pom.xml.
-
Una vez identificado, debe agregar cláusulas de exclusión a la configuración de dependencia correspondiente en su proyecto pom.xml.
Proyecto pom.xml:
<dependencies> <dependency> <groupId>...</groupId> <artifactId>...</artifactId> <exclusions> <exclusion> <artifactId>org.hamcrest</artifactId> <groupId>hamcrest</groupId> </exclusion> </exclusions> </dependency> </dependencies>
Hay una forma de fuerza bruta para hacerlo también. Simplemente abra el proyecto en eclipse, expanda las 'Dependencias de Maven' en el visor de proyectos y, a continuación, agregue la cláusula de exclusión a cada dependencia directa de su proyecto, una por una, cada vez que salte. El plugin de configuración de maven de android volverá a calcular las dependencias en "Dependencias de Maven" y verá desaparecer el tarro problemático. Una vez que usted consigue todos ellos sus errores de Dalvik desaparecerán también.
He intentado hacer que el proyecto de la librería ActionBarSherlock funcione con Maven pero fallé. Cuestiones similares. Así que eliminé las dependencias de maven en el proyecto lib y usé libs / android-support-v4.jar. Btw, la carpeta de prueba también se elimina. Luego ejecuto mi propio proyecto con se refiere al proyecto lib. Las cosas salieron bien.
Ok, gracias a todos por sus respuestas, las cosas que trabajaron para mí fue:
- Eliminar supportv4 libs de actionbarsherlock
- Comente la importación de junit en el proyecto actionbarsherlock para evitar esta generación
- InputConnection.commitText (texto CharSequence, int newCursorPosition) sólo puede confirmar caracteres y números en inglés?
- No conectado. Llamar Conectar o esperar a que onConnected () sea llamado