Hallo,
ich versuche mit Maven eine signed + zipaligned APK zu bauen, also ein Release package sozusagen. Ich bekomme leider folgenden Fehler (Namen und Pfade sind geändert oder entfernt)
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign (signing) on project mydroidapp: Failed to unsign archive C:\Users…\mydroidapp arget\mydroidapp-0.0.1-SNAPSHOT.jar: duplicate entry: META-INF/maven/…/mydroidapp/pom.xml -> [Help 1]
Ich habe ein Maven multi-module Projekt und die pom.xml des submodules mydroidapp sieht so aus:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
<groupId>org.domain.android</groupId>
<artifactId>mydroidapp</artifactId>
<name>mydroid-app</name>
<packaging>apk</packaging>
<parent>
<groupId>org.domain.android</groupId>
<artifactId>mydroidproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<properties>
...
</properties>
<dependencies>
…
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.1.1</version>
<extensions>true</extensions>
</plugin>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.jayway.maven.plugins.android.generation2
</groupId>
<artifactId>
android-maven-plugin
</artifactId>
<versionRange>
[3.1.1,)
</versionRange>
<goals>
<goal>
generate-sources
</goal>
<goal>proguard</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
org.apache.maven.plugins
maven-jarsigner-plugin
signing
sign
verify
prepare-package
true
true
${project.build.directory}/${project.artifactId}.apk
${sign.app_keystore}
${sign.app_alias}
${sign.app_storepass}
${sign.app_keypass}
true
com.jayway.maven.plugins.android.generation2
android-maven-plugin
false
17
<sign>
<debug>false</debug>
</sign>
<zipalign>
<verbose>true</verbose>
<inputApk>${project.build.directory}/${project.artifactId}.apk</inputApk>
<outputApk>${project.build.directory}/${project.artifactId}-signed-aligned.apk
</outputApk>
</zipalign>
</configuration>
<executions>
<execution>
<id>alignApk</id>
<phase>package</phase>
<goals>
<goal>zipalign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
org.codehaus.mojo
build-helper-maven-plugin
${project.build.directory}/${project.artifactId}-signed-aligned.apk
apk
signed-aligned
attach-signed-aligned
package
attach-artifact
[/XML]
Die Konfiguration stammt überwiegend von diesem Tutorial: http://www.simpligility.com/2010/07/sign-zipalign-and-to-market-to-market-with-maven/
Über Google findet man meist die Aussage, dass man package durch prepare-package im maven-jarsigner-plugin ersetzen soll. Das ändert bei mir aber gar nichts, beide Varianten bringen den selben Fehler.
Hat jemand eine Idee, was ich noch versuchen könnte?