项目需要对支付宝SDK进行升级,原来使用alipaySdk-20161129.jar,我把它升级到了alipaySdk-20180601.jar。

正常运行的时候抛出异常:

从异常堆栈很明显可以知道,是因为找不到PayTask这个类。what???这个类明明就存在呀,为什么会找不到呢??

后来经过各种排查,发现是因为项目使用了aspectjx这个库导致的,支付宝并没有提供相应的解决方案:
https://openclub.alipay.com/club/history/read/13357
所以只能从aspectjx寻找答案了。aspectjx里面有提到默认会处理所有的二进制代码文件和库,大致就是这样导致了查找不到支付宝的PayTask这个类。同时aspectjx也提及到了出现编译兼容性问题的解决方案,就是使用exclude命令过滤索要排查的某些文件。

在Issues也有人提到这个问题和解决方案:
https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx/issues/124
所以最终的解决方案是在app工程的build.gradle中添加aspectjx的过滤规则。
aspectjx {
exclude 'com.alipay'
}
在上述链接相关的解决方案中有人添加了如下规则:
aspectjx {
exclude 'com/alipay'
}
经过测试并没有起作用,项目使用的是
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'
只有com.alipay生效了。
项目对支付宝SDK升级后,运行抛出找不到PayTask类的异常。经排查,是项目使用的aspectjx库导致的,支付宝未提供解决方案。aspectjx提及可使用exclude命令过滤文件来解决编译兼容性问题,最终需在app工程的build.gradle中添加aspectjx过滤规则。
515

被折叠的 条评论
为什么被折叠?



