2013-05-22 5 views
5

Hey j'ai du mal à construire et à signer apk en mode release. Je suis capable de créer l'apk en utilisant maven mais quand j'essaye de le télécharger, le playstore de Google dit que je dois construire en mode de libération.Comment construire apk en mode édition en utilisant maven

voici mon pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<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/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.kannact4.gladstonesign</groupId> 
<artifactId>gladstonesign</artifactId> 
<version>1.0.0-SNAPSHOT</version> 
<packaging>apk</packaging> 
<name>Android Maven Example</name> 


<profiles> 
    <profile> 
    <id>release</id> 
    <activation> 
     <property> 
     <name>performRelease</name> 
     <value>true</value> 
     </property> 
    </activation> 
    </profile> 
    </profiles> 
<dependencies> 
    <dependency> 
    <groupId>com.google.android</groupId> 
    <artifactId>android</artifactId> 
    <version>2.2.1</version> 
    <scope>provided</scope> 
    </dependency> 
</dependencies> 
<build> 
    <finalName>unaligned-gladstonesign</finalName> 
    <sourceDirectory>src</sourceDirectory> 

    <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> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jarsigner-plugin</artifactId> 
     <version>1.2</version> 
     <configuration> 
      <keystore>C:\Project\Eclipse workspace\apk_key</keystore> 
      <alias>gs3key</alias> 
      <storepass>****</storepass> 
      <keypass>****</keypass> 
      <verbose>true</verbose> 
      <certs>true</certs> 
     </configuration> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
    <plugins> 
    <plugin> 
    <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
    <artifactId>android-maven-plugin</artifactId> 
    <configuration> 
    <sdk> 
     <platform>17</platform> 
    </sdk> 
    </configuration> 
    </plugin> 
    </plugins> 
</build> 
</project> 

Quelqu'un peut-il me aider à la façon de le libérer dans le mode de construction?

Répondre

12

Votre apk doit être signée et zinguée. Donc, vous devez d'abord 'lier' l'exécution de jarsigner à la phase package et dans un 2ème temps configurer zipalign dans votre plugin android. voir http://www.simpligility.com/2010/07/sign-zipalign-and-to-market-to-market-with-maven/

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-jarsigner-plugin</artifactId> 
<executions> 
    <execution> 
     <id>signing</id> 
     <goals> 
      <goal>sign</goal> 
      <goal>verify</goal> 
     </goals> 
     <phase>package</phase> 
     <inherited>true</inherited> 
     <configuration> 
      <removeExistingSignatures>true</removeExistingSignatures> 
      <archiveDirectory/> 
      <includes> 
       <include>${project.build.directory}/${project.artifactId}.apk</include> 
      </includes> 
      <keystore>${sign.keystore}</keystore> 
      <alias>${sign.alias}</alias> 
      <storepass>${sign.storepass}</storepass> 
      <keypass>${sign.keypass}</keypass> 
      <verbose>true</verbose> 
     </configuration> 
    </execution> 
</executions> 
</plugin> 


<plugin> 
<groupId>com.jayway.maven.plugins.android.generation2</groupId> 
<artifactId>maven-android-plugin</artifactId> 
<inherited>true</inherited> 
<configuration> 
    <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> 
     <skip>false</skip> 
    </zipalign> 
</configuration> 
<executions> 
    <execution> 
     <id>alignApk</id> 
     <phase>package</phase> 
     <goals> 
      <goal>zipalign</goal> 
     </goals> 
    </execution> 
</executions> 
</plugin> 
+0

plus récente android-maven-plugin par opposition à maven-plugin-android requied la définition de faux dans l'élément afin de fonctionner, il semble qu'il est désactivé par défaut! – PiersyP

+0

@PiersyP: merci. J'ai mis à jour la réponse. – willome

+0

Ajoutez https://timestamp.geotrust.com/tsa à jarsigner - marquez l'horodatage et évitez ainsi l'avertissement d'horodatage. – JohnyTex

Questions connexes