Tencent / Shadow

零反射全动态Android插件框架
BSD 3-Clause "New" or "Revised" License
7.43k stars 1.3k forks source link

gradle执行transformClassesWithShadowTransformForPluginDebug任务时卡住 #1313

Closed AndroidMuggle closed 5 months ago

AndroidMuggle commented 5 months ago

1、我本地的工程集成shadow写demo的时候,出现了gradle执行到transformClassesWithShadowTransformForPluginDebug任务时,一直卡住不动的情况,我试着在配置里加了disable_shadow_transform后,能够正常打包出来(插件apk的大小异常)。 2、本地环境: kotlin_version = 1.7.10 shadow_version = 2.3.0 build_gradle_version = 7.0.1 3、然后我试着把build_gradle_version设置成和示例一样的7.4.2版本,并且删除了disable_shadow_transform配置,出现了新的问题,报错如下: A problem occurred configuring project ':pluginapp'.

Could not create task ':pluginapp:generatePluginDebugPluginManifest'. Failed to query the value of task ':pluginapp:processPluginDebugResources' property 'namespace'. Cannot query the value of property 'namespace' because configuration of project ':pluginapp' has not completed yet. 4、运行run with --debug option,报错如下: Caused by: org.gradle.api.internal.tasks.DefaultTaskContainer$TaskCreationException: Could not create task ':pluginapp:generatePluginDebugPluginManifest'. Caused by: org.gradle.api.internal.provider.AbstractProperty$PropertyQueryException: Failed to query the value of task ':pluginapp:processPluginDebugResources' property 'namespace'. Caused by: java.lang.IllegalStateException: Cannot query the value of property 'namespace' because configuration of project ':pluginapp' has not completed yet. Cannot query the value of property 'namespace' because configuration of project ':pluginapp' has not completed yet. 5、pluginapp模块的gradle插件内容如附件所示 shadow配置内容.txt 以上就是暂时想到的所有有效信息,麻烦大佬帮助解答下疑惑,不胜感激!!!ps:项目牛批,必须star👍

shifujun commented 5 months ago

一般来说,你如果能提供一个最小改动的复现代码,直接push上来,我可以调试一下。

如果是你的私有代码,你可以直接debug transform的过程。 https://github.com/Tencent/Shadow/blob/master/CONTRIBUTING.md 里有debug的指引。实在不行加log也是个办法。

shadow应该也算是在相当多的项目上跑过了,应该很难遇到卡住的情况。所以如果真卡住了,一定是想不到的场景,必须给出复现用例才能确认。我说的卡住是指transform工作的线程阻塞了。

AndroidMuggle commented 5 months ago

好的,非常感谢大佬的解答!!!demo是基于我们私有业务代码的,不方便上传。我这边再调试看看,很可能是我这边的用法姿势不对。

AndroidMuggle commented 5 months ago

image 大佬这是我按照你提供的方法调试的堆栈,不太懂这一块的知识,不知道这些堆栈信息足够大佬看出来一些问题

shifujun commented 5 months ago

看起来你要学的还很多。暂时你还是加log吧。

AndroidMuggle commented 5 months ago

image 大佬方便看看这个堆栈么,运行到这一步的时候出错的

wanyingmai commented 5 months ago

@AndroidMuggle 你是不是把plugin apply在宿主的app module里面了。我前两天为了验证gradle-plugin功能,apply在宿主里面了,出现了一模一样的情况,一直在运行transformClassesWithShadowTransformForPluginDebug不结束。 后来宿主里删除了对core的依赖就正常了,新建插件的module也正常了。 推测是transform对class处理逻辑产生了循环处理? @shifujun 请教下,(apply在宿主里)是否是如此?