Giter Club home page Giter Club logo

zhengcx / methodtraceman Goto Github PK

View Code? Open in Web Editor NEW
1.6K 1.6K 212.0 3.69 MB

用于快速找到高耗时方法,定位解决Android App卡顿问题。通过gradle plugin+ASM实现可配置范围的方法插桩来统计所有方法的耗时,并提供友好的界面展示,支持耗时筛选、线程筛选、方法名筛选等。(A Tool for Discovering High Time-consuming Methods for Android App)

Kotlin 69.37% Groovy 14.09% Java 9.60% HTML 3.73% JavaScript 3.21%
android asm gradle-plugin jank method performance transform

methodtraceman's People

Contributors

cxzhengfont avatar pdog18 avatar zhengcx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

methodtraceman's Issues

transformClassesWithTraceManTransform fail

`Task :MG:transformClassesWithTraceManTransformForMG_FactoryDebug
[MethodTraceMan]: transform()
parseTraceConfigFile start!!!!!!!!!!!!
tracepackage:com/sample/mg
beatclass:cn/cxzheng/tracemanui/TraceMan

Task :MG:transformClassesWithTraceManTransformForMG_FactoryDebug FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':MG:transformClassesWithTraceManTransformForMG_FactoryDebug'.

java.lang.RuntimeException (no error message)

  • Try:
    Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':MG:transformClassesWithTraceManTransformForMG_FactoryDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:151)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:148)
    at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:141)
    at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionStateTaskExecuter.execute(ResolveBeforeExecutionStateTaskExecuter.java:75)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
    at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
    at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:73)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
    at
    org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    Caused by: java.lang.RuntimeException
    at org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:148)
    at org.objectweb.asm.ClassReader.readModule(ClassReader.java:731)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:632)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:500)
    at org.objectweb.asm.ClassReader$accept.call(Unknown Source)
    at cn.cxzheng.tracemanplugin.TraceManTransform.traceJarFiles(TraceManTransform.groovy:161)
    at cn.cxzheng.tracemanplugin.TraceManTransform$traceJarFiles.callStatic(Unknown Source)
    at cn.cxzheng.tracemanplugin.TraceManTransform$_transform_closure1$_closure4.doCall(TraceManTransform.groovy:71)
    at cn.cxzheng.tracemanplugin.TraceManTransform$_transform_closure1.doCall(TraceManTransform.groovy:70)
    at cn.cxzheng.tracemanplugin.TraceManTransform.transform(TraceManTransform.groovy:65)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:106)
    at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:46)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
    at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:404)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:393)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:376)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:213)
    at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
    at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
    at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33)
    at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
    at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
    at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
    at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
    at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
    at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
    at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:201)
    at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
    at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
    at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
    at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
    at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:77)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48)
    at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:120)
    ... 35 more`

编译失败,能看看什么原因吗

编译失败了

Task :internationalApp:transformClassesWithTraceManTransformForDebug FAILED
[MethodTraceMan]: transform()
parseTraceConfigFile start!!!!!!!!!!!!
tracepackage:com/android/thememanager

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':internationalApp:transformClassesWithTraceManTransformForDebug'.
    java.lang.NullPointerException (no error message)

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.0/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 25s
39 actionable tasks: 28 executed, 11 up-to-date

无法获取方法耗时

配置文件信息:
#配置需插桩的包,如果为空,则默认所有文件都进行插桩(config the package need to trace,If they are empty, all files are traced by default.)
-tracepackage com/dong/newnovel

#在需插桩的包下设置无需插桩的包(Setting up traceless packages under packages that require trace)
#-keeppackage cn/cxzheng/asmtraceman/test

#在需插桩的包下设置无需插桩的类(Setting up traceless classes under packages that require trace)
#-keepclass cn/cxzheng/asmtraceman/MainActivity

#插桩代码所在类,这里固定配置为:cn/cxzheng/tracemanui/TraceMan(Fixed configuration here: cn/cxzheng/tracemanui/TraceMan)
-beatclass cn/cxzheng/tracemanui/TraceMan#

接入之后启动app闪退

java.lang.ExceptionInInitializerError
at cn.cxzheng.tracemanui.TraceMan.isOpenTraceMethod(TraceMan.java:123)
at cn.cxzheng.tracemanui.TraceMan.start(TraceMan.java:27)
at org.aspectj.runtime.reflect.Factory.(Unknown Source:3)
at com.meiyou.framework.base.FrameworkApplication.ajc$preClinit(FrameworkApplication.java:1)
at com.meiyou.framework.base.FrameworkApplication.(FrameworkApplication.java:1)
at java.lang.Class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
at android.app.Instrumentation.newApplication(Instrumentation.java:1158)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1236)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6683)
at android.app.ActivityThread.access$1300(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.Hashtable.get(java.lang.Object)' on a null object reference
at org.aspectj.runtime.reflect.Factory.makeClass(Factory.java:58)
at org.aspectj.runtime.reflect.Factory.makeMethodSig(Factory.java:189)
at cn.cxzheng.tracemanui.MethodTraceServerManager.ajc$preClinit(MethodTraceServerManager.kt:1)
at cn.cxzheng.tracemanui.MethodTraceServerManager.(Unknown Source:5)
at cn.cxzheng.tracemanui.TraceMan.isOpenTraceMethod(TraceMan.java:123) 
at cn.cxzheng.tracemanui.TraceMan.start(TraceMan.java:27) 
at org.aspectj.runtime.reflect.Factory.(Unknown Source:3) 
at com.meiyou.framework.base.FrameworkApplication.ajc$preClinit(FrameworkApplication.java:1) 
at com.meiyou.framework.base.FrameworkApplication.(FrameworkApplication.java:1) 
at java.lang.Class.newInstance(Native Method) 
at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76) 
at android.app.Instrumentation.newApplication(Instrumentation.java:1158) 
at android.app.LoadedApk.makeApplication(LoadedApk.java:1236) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6683) 
at android.app.ActivityThread.access$1300(ActivityThread.java:237) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:223) 
at android.app.ActivityThread.main(ActivityThread.java:7656) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

代码无法插装

Task :android_lab:transformClassesWithTraceManTransformForEnvTest
[MethodTraceMan]: transform()

beatclass:cn/cxzheng/tracemanui/TraceMan

对于耗时的疑问

我有一个Activity,并没有重写onStart方法。工具检测到onStart方法耗时了800多毫秒,这貌似不太正常,应该不会向未重写的父类方法中插桩吧,因为在检测结果中,我并没有找到onPause之类的其他未重写的其他方法。

可能需要添加混淆规则?

我的项目debug模式下也开启了混淆, 然后发现点击"结束方法耗时"按钮后网页里没有数据, 加上这两条规则之后就可以了.

-keep class cn.cxzheng.tracemanui.** {*;}
-keep class com.ctrip.ibu.** {*;}

出现GC,卡死。最新版本。求解决

2019-12-05 15:47:48.513 26120-26130 E/System: java.lang.StackOverflowError: stack size 1037KB
at java.lang.ThreadLocal$ThreadLocalMap.getEntry(ThreadLocal.java:378)
at java.lang.ThreadLocal$ThreadLocalMap.-wrap0(ThreadLocal.java)
at java.lang.ThreadLocal.get(ThreadLocal.java:146)
at android.os.Looper.myLooper(Looper.java:185)
at cn.cxzheng.tracemanui.TraceMan.isInMainThread(TraceMan.java:113)
at cn.cxzheng.tracemanui.TraceMan.start(TraceMan.java:30)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUtil$Companion.detail(LogUtil.kt:18)
at cn.cxzheng.tracemanui.utils.LogUtil.detail(LogUtil.kt)
at cn.cxzheng.tracemanui.TraceMan.end(TraceMan.java:37)
at cn.cxzheng.tracemanui.MethodTraceServerManager.getLogLevel(MethodTraceServerManager.kt:41)
at cn.cxzheng.tracemanui.utils.LogUti

项目build不成功,Gson有冲突

我项目导了一个converter-gson-2.3.0.jar包,按你的说明配置好后一build项目后就报错了,你项目中用一了google的gson包吗?怎么解决?出错如下:Duplicate class com.google.gson.DefaultDateTypeAdapter found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.ExclusionStrategy found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.FieldAttributes found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.FieldNamingPolicy found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.FieldNamingPolicy$1 found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.FieldNamingPolicy$2 found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.FieldNamingPolicy$3 found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.FieldNamingPolicy$4 found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.FieldNamingPolicy$5 found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.FieldNamingStrategy found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and gson-2.8.5.jar (gson-2.8.5.jar)
Duplicate class com.google.gson.Gson found in modules gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) and

配置完,没有看到日志,浏览器加载错误

请问下,为什么我参照你文章中说的那样,配置,编译完成后,运行后看不到log,并且打开浏览器,浏览器加载错误?
是哪个环节有问题吗?

#插桩代码所在类,这里固定配置为:cn/cxzheng/tracemanui/TraceMan(Fixed configuration here: cn/cxzheng/tracemanui/TraceMan)
-beatclass cn/cxzheng/tracemanui/TraceMan

这个直接copy就可以了吗,不用修改吗?

无法按traceconfig.txt进行插桩

环境:
Android Studio 3.5.3
MethodTraceMan:1.0.7
tracemanplugin:1.0.3

其中配置项logTraceInfo = true

现象:

  1. 在traceconfig中, 写入-tracepackage [应用包名], 编译时看build Output打印只有:

Task :app:transformClassesWithTraceManTransformForDebug
[MethodTraceMan]: transform()

  1. 安装App, 进行方法计时, 结束计时, 结果显示有0条记录, 推断为插桩失败

  2. 在traceconfig中, 将-tracepackage注释掉(首行加#), 编译时看build Ouput显示大量类的插桩信息

  3. 安装App, 进行方法计时, App崩溃, 崩溃信息为java.lang.StackOverflowError: stack size 1041KB, 推断为计时方法本身也被插桩了, 导致循环调用栈溢出

  4. 在traceconfig中, 添加 -keeppackage cn/cxzheng,控制无需插桩的包, 编译运行

6, 安装App, 进行方法计时, App崩溃, 同样是栈溢出, 推断控制无需插桩的包一行未生效

问题原因:
traceconfig文件的判断可能有问题,对问题现象和环境有任何疑问,请向我留言,谢谢。

MethodTraceMan-trace-class

Task :app:clean
Task :app:preBuild UP-TO-DATE
Task :app:preDebugBuild UP-TO-DATE
Task :app:compileDebugAidl NO-SOURCE
Task :app:compileDebugRenderscript NO-SOURCE
Task :app:checkDebugManifest
Task :app:generateDebugBuildConfig
Task :app:mainApkListPersistenceDebug
Task :app:generateDebugResValues
Task :app:generateDebugResources
Task :app:javaPreCompileDebug
Task :app:createDebugCompatibleScreenManifests

Task :app:processDebugManifest
/home/ts/Public/workspaces/com.hmdglobal.app.camera/HMDCamera/app/src/main/AndroidManifest.xml:41:5-66 Warning:
Element uses-permission#android.permission.VIBRATE at AndroidManifest.xml:41:5-66 duplicated with element declared at AndroidManifest.xml:30:5-66

Task :app:mergeDebugShaders
Task :app:compileDebugShaders
Task :app:generateDebugAssets
Task :app:mergeDebugAssets
Task :app:processDebugJavaRes NO-SOURCE
Task :app:checkDebugDuplicateClasses
Task :app:validateSigningDebug
Task :app:signingConfigWriterDebug
Task :app:mergeDebugJniLibFolders
Task :app:mergeDebugResources
warn: removing resource com.hmdglobal.app.camera:string/flash_with_superzoom_toast without required default value.
warn: removing resource com.hmdglobal.app.camera:string/pano_too_fast_prompt without required default value.
warn: removing resource com.hmdglobal.app.camera:string/panoramagp3_ANTI_BANDING without required default value.
warn: removing resource com.hmdglobal.app.camera:string/pref_category_advanced without required default value.
warn: removing resource com.hmdglobal.app.camera:string/setting_stereo_name without required default value.
warn: removing resource com.hmdglobal.app.camera:string/startup_dialog_botton_next without required default value.
warn: removing resource com.hmdglobal.app.camera:string/super_zoom_on_toast without required default value.
warn: removing resource com.hmdglobal.app.camera:string/tip_for_move_down without required default value.
warn: removing resource com.hmdglobal.app.camera:string/tip_for_move_left without required default value.
warn: removing resource com.hmdglobal.app.camera:string/tip_for_move_right without required default value.
warn: removing resource com.hmdglobal.app.camera:string/tip_for_move_slow without required default value.
warn: removing resource com.hmdglobal.app.camera:string/tip_for_move_up without required default value.

Task :app:processDebugResources

Task :app:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Task :app:compileDebugSources

Task :app:transformClassesWithTraceManTransformForDebug FAILED
[MethodTraceMan]: transform()
tracepackage:com/hmdglobal/app/camera
MethodTraceMan-trace-class: com/hmdglobal/app/camera/MicroVideoModule$3

Task :app:mergeDebugNativeLibs
Task :app:mergeDebugJavaResource

Execution failed for task ':app:transformClassesWithTraceManTransformForDebug'.

Task :app:transformClassesWithTraceManTransformForDebug
[MethodTraceMan]: transform()
parseTraceConfigFile start!!!!!!!!!!!!
tracepackage:我的项目包名信息手动删掉了格式为com/xxxx/xxxx
beatclass:cn/cxzheng/tracemanui/TraceMan

Task :app:transformClassesWithTraceManTransformForDebug FAILED
Task :app:mergeDebugNativeLibs
Task :app:mergeDebugJavaResource

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:transformClassesWithTraceManTransformForDebug'.

java.lang.RuntimeException (no error message)

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

不知道这是什么原因,在新建Hello Word项目中,同样的操作配置没有问题可以运行,可以确定我的配置是没有问题的,但是在我的项目中就是运行不起来,无解

频繁gc,导致卡顿,不监控时希望可以暂停内部操作

频繁打印
I/zygote: WaitForGcToComplete blocked Alloc on HeapTrim for 21.864ms
I/zygote: Starting a blocking GC Alloc
I/zygote: Starting a blocking GC Alloc
I/zygote: Waiting for a blocking GC Alloc
I/zygote: Waiting for a blocking GC Alloc
I/zygote: Background concurrent copying GC freed 865(288MB) AllocSpace objects, 0(0B) LOS objects, 33% free, 95MB/143MB, paused 293us total 121.579ms
I/zygote: WaitForGcToComplete blocked Alloc on HeapTrim for 76.357ms
I/zygote: Starting a blocking GC Alloc
I/zygote: WaitForGcToComplete blocked Alloc on HeapTrim for 29.824ms
I/zygote: Starting a blocking GC Alloc

频繁GC对检测的结果会造成影响,并且在没有进行检测的时候,希望暂停内部的操作

transformClassesWithTraceManTransformForDebug

AndroidStudio 3.5.2

java.lang.NullPointerException
	at org.objectweb.asm.Item.set(Item.java:233)
	at org.objectweb.asm.ClassWriter.newMethodItem(ClassWriter.java:1498)
	at org.objectweb.asm.MethodWriter.visitMethodInsn(MethodWriter.java:899)
	at cn.cxzheng.tracemanplugin.TraceMethodVisitor.onMethodEnter(TraceMethodVisitor.kt:36)
	at org.objectweb.asm.commons.AdviceAdapter.visitCode(AdviceAdapter.java:112)
	at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1125)
	at org.objectweb.asm.ClassReader.accept(ClassReader.java:698)
	at org.objectweb.asm.ClassReader.accept(ClassReader.java:500)
	at org.objectweb.asm.ClassReader$accept.call(Unknown Source)
	at cn.cxzheng.tracemanplugin.TraceManTransform$_traceSrcFiles_closure2.doCall(TraceManTransform

update

2019/11/28 16:33
同步最新代码之后,没有出现这个问题了 。
#25 但是目前存在这个问题

gson依赖冲突

我项目内有gson,编译时冲突了。

debugImplementation('com.github.zhengcx:MethodTraceMan:1.0.4') {

    exclude group: 'com.google.code.gson'

}
releaseImplementation 'com.github.zhengcx:MethodTraceMan:1.0.5-noop'

排除掉gson,编译报空指针
org.gradle.execution.MultipleBuildFailures: Build completed with 1 failures.
at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:386)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:247)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:159)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:134)
at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:58)
at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:55)
at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:82)
at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:55)
at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run(ClientProvidedBuildActionRunner.java:55)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':transformClassesWithTraceManTransformForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
... 6 more
Caused by: java.lang.NullPointerException
at org.objectweb.asm.Item.set(Item.java:233)
at org.objectweb.asm.ClassWriter.newMethodItem(ClassWriter.java:1498)
at org.objectweb.asm.MethodWriter.visitMethodInsn(MethodWriter.java:899)
at cn.cxzheng.tracemanplugin.TraceMethodVisitor.onMethodEnter(TraceMethodVisitor.kt:35)
at org.objectweb.asm.commons.AdviceAdapter.visitCode(AdviceAdapter.java:112)
at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1125)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:698)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:500)
at org.objectweb.asm.ClassReader$accept.call(Unknown Source)
at cn.cxzheng.tracemanplugin.TraceManTransform$_traceSrcFiles_closure2.doCall(TraceManTransform.groovy:114)
at sun.reflect.GeneratedMethodAccessor782.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
at groovy.lang.Closure.call(Closure.java:411)
at groovy.lang.Closure.call(Closure.java:427)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachFileRecurse(ResourceGroovyMethods.java:1283)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachFileRecurse(ResourceGroovyMethods.java:1281)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachFileRecurse(ResourceGroovyMethods.java:1281)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachFileRecurse(ResourceGroovyMethods.java:1281)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachFileRecurse(ResourceGroovyMethods.java:1281)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachFileRecurse(ResourceGroovyMethods.java:1518)
at org.codehaus.groovy.runtime.dgm$991.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:246)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:55)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
at cn.cxzheng.tracemanplugin.TraceManTransform.traceSrcFiles(TraceManTransform.groovy:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:352)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:184)
at cn.cxzheng.tracemanplugin.TraceManTransform$_transform_closure1$_closure3.doCall(TraceManTransform.groovy:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
at groovy.lang.Closure.call(Closure.java:411)
at groovy.lang.Closure.call(Closure.java:427)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2296)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2281)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2322)
at org.codehaus.groovy.runtime.dgm$186.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:246)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:55)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
at cn.cxzheng.tracemanplugin.TraceManTransform$_transform_closure1.doCall(TraceManTransform.groovy:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
at groovy.lang.Closure.call(Closure.java:411)
at groovy.lang.Closure.call(Closure.java:427)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2296)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2281)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2322)
at org.codehaus.groovy.runtime.dgm$186.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:246)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:55)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
at cn.cxzheng.tracemanplugin.TraceManTransform.transform(TraceManTransform.groovy:66)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at sun.reflect.GeneratedMethodAccessor1236.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:47)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145)
at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49)
at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33)
at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43)
at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29)
at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134)
at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83)
at java.util.Optional.orElseGet(Optional.java:267)
at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36)
at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at java.util.Optional.map(Optional.java:215)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91)
... 35 more

Build error with no error msg

14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':app:transformClassesWithTraceManTransformForStagingDebug'.
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > java.lang.NullPointerException (no error message)
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace.  Run with --scan to get full insights.
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Get more help at https://help.gradle.org
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] 
14:28:01.816 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED in 43s

Build error with Unexpected end of ZLIB input stream

* What went wrong:
Execution failed for task ':app:checkStagingDebugDuplicateClasses'.
> Could not resolve all files for configuration ':app:stagingDebugRuntimeClasspath'.
   > Failed to transform file 'classes_temp.jar' to match attributes {artifactType=android-classes, org.gradle.usage=java-runtime-jars}
      > Execution failed for JetifyTransform:project_path\platform_base\libs\classes_temp.jar.
         > Failed to transform 'project_path\platform_base\libs\classes_temp.jar' using Jetifier. Reason: Unexpected end of ZLIB input stream. (Run with --stacktrace for more details.)

config 里面只是打开了-tracepackage 设置为包名。

我的工程结构是有个App的module,引用了platform_base, 依赖在App和base中都有,初始化Java代码是在Base中,配置插件实在App中。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.