如何使用maven在发布模式下构建apk

时间:2013-05-22 18:50:41

标签: android maven-3 maven-release-plugin

嘿,我很难在发布模式下构建和签署apk。我可以使用maven创建apk但是当我尝试上传它时,Google Playstore说我需要在发布模式下构建。

这是我的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> 

有人可以帮我解决如何在构建模式下释放它吗?

1 个答案:

答案 0 :(得分:13)

你的apk需要签名和zipaligned。所以你应该首先将jarsigner执行'绑定'到package阶段,然后在你的android插件中第二次配置zipalign。见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>