关于Stack size becomes negative after instruction [66] dup in xxx

  1. 集成最新的alipay sdk遇到如下错误:
    Unexpected error while computing stack sizes: Class = [com/alipay/sdk/m/i/a] Method = [a(Lcom/alipay/sdk/m/o/a;Landroid/content/Context;Z)V] Exception = [java.lang.IllegalArgumentException] (Stack size becomes negative after instruction [66] dup in [com/alipay/sdk/m/i/a.a(Lcom/alipay/sdk/m/o/a;Landroid/content/Context;Z)V]) Unexpected error while editing code:

  2. 定位:
    (1)确保出问题的类被keep住了
    (2)如果1确实被keep住但还有问题,可能是别的gradle插件在transform期间把字节码操作坏了(比如booster的1.6.0版本),导致proguard期间才报错,验证是哪个插件时可以二分法注释插件来定位。

  3. 解决:
    (1)看该插件是否有exclude某个class功能,有的话这应该是最优解
    (2)升级该插件,比如滴滴的booster升级到4.1.0可解决此问题
    (3)如果1和2都没有,该插件没人维护了,那只能尝试自己写个插件在编译期排除此class文件,然后将此class反编译成源码,查看出问题的方法,找到可能会被写坏的方法,换种方式写,再将修改后的源码参与编译,可能就不会被别的gradle插件写坏了,此乃无奈之举,耗时也会比较久。

你可能感兴趣的:(关于Stack size becomes negative after instruction [66] dup in xxx)