支付宝支付 ClassNotFoundException: Didn't find class "com.alipay.sdk.app.PayTask"

在集成支付宝支付过程中,按照支付宝api文档集成,在测试demo 中运行正常,在自己项目就是找不到PayTask,这问题卡了好久没有解决 ,最后发现和项目里用到了冲突了...  故写此篇博客记录一下,希望有次困扰的同学也能看到。

在需要申请权限得函数上添加注解如定位权限:

@Permission(Manifest.permission.ACCESS_FINE_LOCATION)//写上需要申请的权限一个或若干用,隔开即可

private fun positioning() {
        //开始你得定位代码
    }


用户同意后会执行 positioning()函数里面,开始执行你写得定位代码。同样有同意,就有拒绝。

@PermissionCanceled //点击取消执行这个函数
private fun cancel() {
        showToast("你拒绝了这个权限")
    }


@PermissionDenied//点击取消和不在提醒 执行这个函数 注意 这个函数执行后 会自动跳转到手机系统设置权限得页面
private fun denied() {
        showToast("没有这个权限手机无法正常使用")
    }



到这里就完了? 嗯哼~对,到这里就完了(别忘了再配置清单里面添加对应得权限)就是这么简单。

来一个gif感受一下

代码效果

##如何引入lib到自己得项目中?

要使用这个lib得很简单下载这个lib到自己项目中引入。

需要注意得地方:

在主项目app得build.gradle 里面添加 这几句代码

   apply plugin: 'com.hujiang.android-aspectjx'

在主项目最外面的build.gradle中添加

   classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0'
  


做完上面这几步同步一下就可以正常使用了。是不是很简单?

##可能遇到得问题

其实我最想写的就是这个模块!!!因为一个问题卡了我一个星期,才解决。就是用这个申请权限lib的时候因为使用了
aspectj。这个是AOP用的一个框架,想知道具体干什么的可以点击脚注看看这里就不说别的了。因为aspectj这个东西他默认会处理所有的二进制代码文件和库,刚好最近在做模块化,于是和支付模块冲突了…

这里写图片描述

???? 什么情况?找不到这类?

项目代码

支付宝jar
可以通过错误log和lib里面的支付宝jar里面的目录知道是因为找不到这个Paytask报错的那么为什么呢?

重复一下上面的一句话

因为aspectj这个东西他默认会处理所有的二进制代码文件和库

那么如何解决呢?我找过支付宝客服,以为是支付宝jar的问题,结果被告知使用了aspectj要自己解决。。。
好吧,我找github上aspectjx 这个作者,我用的是他封装的。发现了忽略的一个东西(狂汗不止)

要过滤第三方的东西 好了 按照说的 写好后,虎躯一震~~~

这里写图片描述

嗯哼?是的还是之前的错。于是又把文档看了几遍,没问题。。。。。。。
顿时头大无比。突然开窍了试了下!

解决办法在app的build.gradle中写如下代码:

   aspectjx {
//排除所有package路径中包含`android.support`的class文件及库(jar文件)
    exclude 'com/alipay'
}


过滤第三方jar包下的文件,注意包名不适用.是用/隔开 (就是这个地方卡了我一个星期,试了一下点也可以 )

aspectjx { exclude 'com.alipay' }

有好几个同学反映说过滤的代码不知道写在哪里
路径 app目录下的build.gradle文件中 划重点: android{} 外面
然后clear 清理一下缓存 因为aop会动态生成静态代码记得经常清理一下缓存
--------------------- 


 

猜你喜欢

转载自blog.csdn.net/cmyperson/article/details/89250787
今日推荐