project.extensions.getByType Extension of type ‘AndroidComponentsExtension‘ does not exist 解决

目录

错误原因猜测:

解决办法:


今天在使用android asm的时候发生找不到AndroidComponentsExtension的错误

project.extensions.getByType Extension of type 'AndroidComponentsExtension' does not exist

错误原因猜测:

在project注册transform的时候报的这个错误,看情况大概是工程有子module,而子module是没有AndroidComponentsExtension的。(只是这个猜测,因为我asm功底不深)

解决办法:

使用Project.pluginManager.withPlugin("com.android.application")过滤模块,获取到ApplicationPlugin,然后进行transform的注册。参考:Bytecode transformations: The Android Gradle Plugin | Product Blog • Sentry

target.pluginManager.withPlugin("com.android.application") {
            val androidComponentsExtension =
                target.extensions.getByType(AndroidComponentsExtension::class.java)
            androidComponentsExtension.onVariants { variant ->
                log("variant: ${variant.name}")
                variant.instrumentation.transformClassesWith(MethodTraceTransform::class.java, InstrumentationScope.PROJECT){}
                variant.instrumentation.setAsmFramesComputationMode(FramesComputationMode.COMPUTE_FRAMES_FOR_INSTRUMENTED_METHODS)
            }
            log("========  end apply  ========")
        }

猜你喜欢

转载自blog.csdn.net/mldxs/article/details/128034218
今日推荐