FlyJingFish/AndroidAOP

编译缓存无法清除

byteflys opened this issue · 2 comments

描述一下大概怎么回事

@AndroidAopReplaceMethod
把ReplaceLog换成LogReplaceRule后,执行的仍然是旧代码
卸载了APP,删除了所有build目录重新编译还是不行
插件编译是不是有缓存,而且是存在于机器上,不是项目里面

你的代码

@AndroidAopReplaceClass("android.util.Log")
object LogReplaceRule {

    @JvmStatic
    @AndroidAopReplaceMethod("int e(java.lang.String,java.lang.String)")
    fun e(tag: String, msg: String): Int {
        Toast.makeText(Global.application, "$tag  $msg", Toast.LENGTH_LONG).show()
        return 0
    }
}

错误日志

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.code.aop.ReplaceLog" on path

库的版本号:

api("io.github.FlyJingFish.AndroidAop:android-aop-core:2.0.9")
api("io.github.FlyJingFish.AndroidAop:android-aop-annotation:2.0.9")
ksp("io.github.FlyJingFish.AndroidAop:android-aop-ksp:2.0.9")

删除项目下.gradle目录可以解决

本库没有这种缓存。出现这个问题的原因在于增量编译,你只改一个类不足以影响整个项目的编译。因此在遇到此类问题时,理论上只要clean下项目重新编译即可