if (config == null) {
config = new DoubleTabConfig();
}
config.transform();
});
if (isApp) {
AppExtension appExtension = project.getExtensions().getByType(AppExtension.class);
appExtension.registerTransform(new DoubleTapAppTransform());
return;
}
if (project.getPlugins().hasPlugin("com.android.library")) {
LibraryExtension libraryExtension = project.getExtensions().getByType(LibraryExtension.class);
libraryExtension.registerTransform(new DoubleTapLibraryTransform());
}
}
}
以前我在写的时候一般只会给`AppExtension`注册一个`Transform`,而在`LibraryExtension`同样也可以注册一个`Transform`。在`LibraryExtension`上注册的会让这部分字节码操作被使用在使用了这个Plugin的`Module`上。
> 小贴士: 这个Transform同样会对Aar生效哦,不仅仅是本地产物。
而这个`Transform`的代码上最大的差别就是,其中的输入产物和类型有差别以外,其实别的代码全是一样的。
class DoubleTapLibraryTransform : DoubleTapTransform() {
override fun getScopes(): MutableSet<in QualifiedContent.Scope> {
return ImmutableSet.of(
QualifiedContent.Scope.PROJECT
)
}
override fun getInputTypes(): Set<QualifiedContent.ContentType>? {
return TransformManager.CONTENT_CLASS
}
}
> 这边有个Scope作用域,In