2013-05-22 15 views
5

Ehi Sto facendo fatica a creare e firmare l'apk in modalità di rilascio. Sono in grado di creare l'apk usando Maven, ma quando provo a caricarlo, Google Playstore dice che ho bisogno di costruire in modalità di rilascio.Come creare apk in modalità di rilascio usando Maven

qui è la mia 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> 

qualcuno mi può aiutare con il modo di rilasciarlo in modalità di compilazione?

risposta

12

L'apk deve essere firmato e firmato con zip. Quindi dovresti prima "legare" l'esecuzione jarsigner alla fase package e in una seconda volta configurare zipalign nel tuo plug-in Android. vedi 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

il recente Android-maven-plugin più rispetto a Maven-android-plugin requied la definizione di falsa all'interno dell'elemento al fine di eseguire, a quanto pare è disabilitato per default! – PiersyP

+0

@PiersyP: grazie. Ho aggiornato la risposta. – willome

+0

Aggiungi https://timestamp.geotrust.com/tsa a jarsigner -tag al timestamp e quindi evita l'avviso di timestamp. – JohnyTex

Problemi correlati