Can't process class [com/imagpay/bP.class] (Unknown verification type [25] in stack map frame

最近在Android studio下打包文件,设置混淆后,打包出现

* What went wrong:
Execution failed for task ':unionpaylib:transformClassesAndResourcesWithProguardForDebug'.
> java.io.IOException: Can't read [D:\MPos\unionpaylib\libs\ZCSComboV2.6.1.2.jar(;;;;;;**/*.class)] (Can't process class [com/imagpay/bP.class] (Unknown verification type [25] in stack map frame))


取消混淆,打包OK。判断是混淆j程序Proguard哪里处理有问题。通过网络资料查找发现有很多类似问题。

Proguard网站上也有提供解决方法。 https://sourceforge.net/p/proguard/bugs/420/

主要是要修改Proguard源码中ClassConstants.java文件。


把 public static final String ATTR_StackMapTable = "StackMapTable";

改为 public static final String ATTR_StackMapTable = "dummy";


这里做下记录:

1、下载Proguard源码:https://sourceforge.net/projects/proguard/files/ 找到最新Proguard源码。

2、解压下载的源码包,我的是 proguard5.3.1.zip,目录结构如下:

3、修改源码,保存,然后进入buildscripts目录,阅读README文件。里面记录多个编译方式。我用的是ant方式。

在命令行下输入 ant就行。

由于没有安装java移动设备套件wtk,故报错,不理它,生成的jar在lib目录中。

4、把生成的proguard.jar放到gradle指定的目录中。

方法一、直接修改.gradle中的文件。C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\net.sf.proguard

在这个目录下是Proguard的一些文件,找到自己要用的,我的是C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\net.sf.proguard\proguard-base\5.2.1\4f61348b4e7c943b85679dcb697f3a5fc3101921\proguard-base-5.2.1.jar。用刚编译好的jar替换它,并修改为一样的名字。然后as重编译通过。


方法二、在as项目根目录中指定jar目录。如proguard,然后把新proguard.jar复制到那个目录。然后在build.gradle中配置


然后编译自己的项目,没有报错。搞定。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值