【问题标题】:Cannot sign an APK with Android Studio - Getting exception: DerInputStream.getlength()无法使用 Android Studio 签署 APK - 出现异常:DerInputStream.getlength()
【发布时间】:2021-06-01 19:46:59
【问题描述】:

我刚刚继承了一个 2013 年创建的旧项目。

Keystore 可能是使用 jdk 7 创建的。

当我尝试在 Android Studio 中生成 APK 时,抛出异常:
无法加载密钥库:无法初始化,java.io.IOException: DerInputStream.getLength(): Redundant length bytes found

我尝试的是:

  • 将 Keystore 转换为 pk12 - 这里我遇到了与上面相同的异常
  • 在 KeyStore Explorer 中打开密钥库 - 也不工作,我无法查看密钥
  • 我也尝试联系 google(Play 商店支持),但他们的回复是“我们的团队没有接受过为密钥提供技术支持的培训。”

相关帖子:
Android keystore corrupted
Unable to open keystore in AndroidStudio - "Redundant length bytes found"

我不知道下一步该做什么。

唯一可行的方法是在终端中手动签署未签名的 apk。
这个解决方案不是最优的。 此外,它仅在使用旧的 jdk 版本时有效(在这种情况下为 jdk1.7.0_80) 所以我不能长期使用这个解决方案。

【问题讨论】:

    标签: android keystore android-keystore jks


    【解决方案1】:

    这可能会对您有所帮助。这是在 JDK 7 上生成的密钥库无法使用 JDK 8 读取的相同情况。

    https://forum.unity.com/threads/keystore-generated-on-jdk-7-unable-to-read-with-jdk-8.460020/

    【讨论】:

    • 他们还使用 jdk7 对 apk 进行签名(手动)。这对我没有帮助因为我想用 Android Studio 做它并继续使用 AAB 而不是 APK
    【解决方案2】:

    好吧,我没有尝试修复原始密钥库,而是通过转到 Play 应用签名来解决它。

    我创建了一个新的上传密钥,从现在开始我将使用它来创建签名的 APK。

    对于那些可能会有所帮助的人:

    • 签署它以玩商店并导航到您的应用程序

    • 转到设置 -> 应用完整性

    • 选择从 Java 密钥库导出和上传密钥,然后按照说明操作*

    *请注意,在此阶段您可能会遇到与上述相同的异常 (DerInputStream.getlength()....)。
    发生这种情况是因为私钥生成命令使用 java - 最初导致异常的相同 java 版本。
    所以这就是问题所在:
    您应该使用不同的 java 8 版本,在该版本中不会发生异常(如 1.8.0_112)。
    它不适用于 java 7 及更早版本,因为 pepk 工具是使用 java 8 构建的。

    类似这样的:

    /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/jre/bin/java -jar pepk.jar ....

    从这里继续创建新的上传密钥,您应该已经准备就绪。

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 2015-01-13
      • 2011-11-15
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多