Java / Proguard:找出为什么 jar 没有 Validate/Verify?
Java / Proguard: Find out why jar does not Validate/Verify?
运行 进入这个错误(因为其他人之前有 运行 进入):
java.lang.VerifyError: Expecting a stackmap frame at branch target 18
我通过将 -noverify
添加到 jdk 选项找到了解决方法。当然这不是真正的解决方案,所以我试图找出 jar 的实际问题以及为什么它没有成功验证...
这里有两个罐子,可以validate/not验证:
- 验证:https://repo.leanplum.com/com/leanplum/Leanplum/1.2.25/
- 不验证:https://repo.leanplum.com/com/leanplum/Leanplum/1.3.1/Leanplum-1.3.1.jar
我试图深入了解为什么它没有验证,尝试了 asm,它为两者吐出这么多错误。
这个问题是由 proguard 引起的,因为禁用 proguard 缩小会使 jar 再次验证。
有什么方法可以找出为什么 jar 没有通过 java 验证?
这些 jars 很可能 obfuscated/produced 来自 ProGuard,并且不包含 StackMapFrame 属性。由于这些jar主要用于Android开发,所以不需要保留这些属性,因为Dalvik不支持这些属性。
如果您想在普通 Java 应用程序中使用它们,您将需要创建具有适当 StackMapFrame 属性的 jar 文件(或使用 -noverify 选项)。实际上,您也可以为此使用 ProGuard,请查看 User Guide.
运行 进入这个错误(因为其他人之前有 运行 进入):
java.lang.VerifyError: Expecting a stackmap frame at branch target 18
我通过将 -noverify
添加到 jdk 选项找到了解决方法。当然这不是真正的解决方案,所以我试图找出 jar 的实际问题以及为什么它没有成功验证...
这里有两个罐子,可以validate/not验证: - 验证:https://repo.leanplum.com/com/leanplum/Leanplum/1.2.25/ - 不验证:https://repo.leanplum.com/com/leanplum/Leanplum/1.3.1/Leanplum-1.3.1.jar
我试图深入了解为什么它没有验证,尝试了 asm,它为两者吐出这么多错误。
这个问题是由 proguard 引起的,因为禁用 proguard 缩小会使 jar 再次验证。
有什么方法可以找出为什么 jar 没有通过 java 验证?
这些 jars 很可能 obfuscated/produced 来自 ProGuard,并且不包含 StackMapFrame 属性。由于这些jar主要用于Android开发,所以不需要保留这些属性,因为Dalvik不支持这些属性。
如果您想在普通 Java 应用程序中使用它们,您将需要创建具有适当 StackMapFrame 属性的 jar 文件(或使用 -noverify 选项)。实际上,您也可以为此使用 ProGuard,请查看 User Guide.