2013-05-22 11 views
5

Hej, mam trudności z budowaniem i podpisywaniem apk w trybie wydania. Jestem w stanie stworzyć apk za pomocą maven, ale kiedy próbuję go przesłać, Google Playstore mówi, że muszę zbudować w trybie wydania.Jak zbudować apk w trybie zwolnienia za pomocą maven

tutaj jest mój 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> 

Czy ktoś może mi pomóc w jaki sposób, aby zwolnić go w trybie build?

Odpowiedz

12

Twój apk musi być podpisany i zipaligned. Tak więc powinieneś najpierw "związać" wykonanie jarsigner z fazą package i po raz drugi skonfigurować zipalign w swojej wtyczce Android. zobacz 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

nowszą android-maven-plugin, w przeciwieństwie do Maven-android-plugin requied definicję fałszywego wewnątrz elementu w celu uruchomienia, wydaje się, że jest domyślnie wyłączone! – PiersyP

+0

@PiersyP: dziękuję. Zaktualizowałem odpowiedź. – willome

+0

Dodaj https://timestamp.geotrust.com/tsa do jarsignera -tag do sygnatury czasowej i tym samym uniknij ostrzeżenia o znaczniku czasu. – JohnyTex

Powiązane problemy