【问题标题】:maven-jarsigner-plugin : unable to sign jar: java.util.zip.ZipException: invalid entry compressed sizemaven-jarsigner-plugin:无法签署 jar:java.util.zip.ZipException:无效的条目压缩大小
【发布时间】:2015-03-12 18:13:24
【问题描述】:

自从将一个非常旧的项目更新到android-maven-plugin 版本4.1.0 后,我在签署我的apk 以进行发布时出现以下错误:

无法签署 jar:java.util.zip.ZipException:无效条目 压缩大小

我在 pom 中的 maven 签名配置:

  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jarsigner-plugin</artifactId>
            <version>1.2</version>
            <executions>
              <execution>
                <id>signing</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>package</phase>
                <inherited>true</inherited>
                <configuration>
                  <archiveDirectory></archiveDirectory>
                  <includes>
                    <include>target/*.apk</include>
                  </includes>
                  <keystore>keystore/keystore</keystore>
                  <storepass>sjdjjfdf</storepass>
                  <keypass>sjdjjfdf</keypass>
                  <alias>v110</alias>
                  <arguments>
                    <argument>-sigalg</argument>
                    <argument>MD5withRSA</argument>
                    <argument>-digestalg</argument>
                    <argument>SHA1</argument>
                  </arguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>com.simpligility.maven.plugins</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <inherited>true</inherited>
            <configuration>
              <sign>
                <debug>false</debug>
              </sign>
              <zipalign>
                <skip>false</skip>
                <verbose>true</verbose>
                <inputApk>${project.build.directory}/${project.artifactId}-${project.version}.apk</inputApk>
                <outputApk>${project.build.directory}/${project.artifactId}-release-v${project.version}.apk</outputApk>
              </zipalign>
            </configuration>
            <executions>
              <execution>
                <id>alignApk</id>
                <phase>install</phase>
                <goals>
                  <goal>zipalign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

经过调查发现:

  • 不同的大小是由于生成的调试 apk 中的 META-INF 文件夹。
  • 这是由于调试 apk 的自动签名造成的。

有人遇到过这个问题并找到了解决方案吗?

相关帖子,但未链接到 pom 和 maven 配置:

jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 463 but got 465 bytes)

【问题讨论】:

  • 出于文档目的添加了这个问题,因为我找不到任何问题和这个主题并搜索了很长一段时间的解决方案......
  • 使用这么旧的版本有什么特殊原因吗? Current 1.4
  • 不,这是一个 1.2 版本的旧项目。发帖后我升级到 1.4 版。

标签: android maven android-maven-plugin


【解决方案1】:

在发布配置文件中搜索从 jar 生成中删除 META-INF 文件后,我发现最简单的解决方案是将 &lt;removeExistingSignatures&gt;true&lt;/removeExistingSignatures&gt; 添加到 maven-jarsigner-plugin 配置:

  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jarsigner-plugin</artifactId>
            <version>1.2</version>
            <executions>
              <execution>
                <id>signing</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>package</phase>
                <inherited>true</inherited>
                <configuration>
                  <!-- Remove debug signature added to the apk automatically since x android plugin version -->
                  <removeExistingSignatures>true</removeExistingSignatures>
                  <archiveDirectory></archiveDirectory>
                  <includes>
                    <include>target/*.apk</include>
                  </includes>
                  <keystore>keystore/keystore</keystore>
                  <storepass>sjdjjfdf</storepass>
                  <keypass>sjdjjfdf</keypass>
                  <alias>v110</alias>
                  <arguments>
                    <argument>-sigalg</argument>
                    <argument>MD5withRSA</argument>
                    <argument>-digestalg</argument>
                    <argument>SHA1</argument>
                  </arguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>com.simpligility.maven.plugins</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <inherited>true</inherited>
            <configuration>
              <sign>
                <debug>false</debug>
              </sign>
              <zipalign>
                <skip>false</skip>
                <verbose>true</verbose>
                <inputApk>${project.build.directory}/${project.artifactId}-${project.version}.apk</inputApk>
                <outputApk>${project.build.directory}/${project.artifactId}-release-v${project.version}.apk</outputApk>
              </zipalign>
            </configuration>
            <executions>
              <execution>
                <id>alignApk</id>
                <phase>install</phase>
                <goals>
                  <goal>zipalign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2016-02-18
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多