Interface MainProcessHandler
-
- All Known Implementing Classes:
AbsMainProcessPlugin,CommonPlugin
public interface MainProcessHandler
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Deprecated Methods Modifier and Type Method Description voidafterTransform(TransformEngine transformer)用于transform完成后,进行各种illegal check It's usually used for plugin's custom illegal check after transform.voidbeforeTransform(TransformEngine transformer)用于transform前的准备工作 Prepare for real transform.default voidbeforeTraverse(TransformEngine transformer)用于transform前的准备工作,在traverseIncremental之后,traverse方法之前执行。可以判断是否走增量 It is used for preparation before transform, and is executed after traverseIncremental and before traverse method.default intflagForClassReader(Process process)Custom your own flag for ClassReader.default intflagForClassWriter()Custom your own flag for ClassWriter.voidinit()Deprecated.default voidinit(TransformEngine transformer)用于transform开始前初始化实现 used for initialization before transform started.default booleanisOnePassEnough()Whether skip traverse, do transform only.default booleanneedPreVerify()这个Handler是不是要求在真正执行前进行一次校验 Verify bytecode before transform.default booleanneedVerify()在执行完这个Handler后是否需要进行一次校验 Verify bytecode after transform.default java.util.List<FileProcessor>process(Process process)在traverse和transform的过程中,加入自定义的FileProcessor,提供更大的灵活性。 Add custom FileProcessor during traverse or transform.default voidstartRunning(TransformEngine transformer)启动运行操作回调,表示马上开始处理过程。这个是traverse(java.lang.String, com.ss.android.ugc.bytex.common.visitor.ClassVisitorChain)方法前面的一个声明周期。此时增量状态已经完全确定,不能修改。 建议在此时判断在是否增量构建然后再加载增量cache.booleantransform(java.lang.String relativePath, ClassVisitorChain chain)handle 工程中的所有class To process all classed in the whole project.booleantransform(java.lang.String relativePath, org.objectweb.asm.tree.ClassNode node)handle 工程中的所有class To process all classed in the whole project.voidtraverse(java.lang.String relativePath, ClassVisitorChain chain)遍历工程中所有的class Traverse all classes in the whole project.voidtraverse(java.lang.String relativePath, org.objectweb.asm.tree.ClassNode node)遍历工程中所有的class Traverse all classes in the whole project.voidtraverseAndroidJar(java.lang.String relativePath, ClassVisitorChain chain)遍历android.jar中所有的class Traverse all classes in android.jar.voidtraverseAndroidJar(java.lang.String relativePath, org.objectweb.asm.tree.ClassNode node)遍历android.jar中所有的class Traverse all classes in android.jar.default voidtraverseIncremental(FileData fileData, ClassVisitorChain chain)遍历工程中所有的增量文件,不仅仅是class,如果是jar则会解压之后将entry传递进来 状态可能为ADD,REMOVE,CHANGED这几种状态,只在增量构建时有效default voidtraverseIncremental(FileData fileData, org.objectweb.asm.tree.ClassNode node)遍历工程中所有的增量文件,不仅仅是class,如果是jar则会解压之后将entry传递进来 状态可能为ADD,REMOVE,CHANGED这几种状态,只在增量构建时有效
-
-
-
Method Detail
-
init
@Deprecated void init()
Deprecated.请优先使用init(TransformEngine)Useinit(TransformEngine)instead.
-
init
default void init(@Nonnull TransformEngine transformer)用于transform开始前初始化实现 used for initialization before transform started.- Parameters:
transformer- engine
-
traverseIncremental
default void traverseIncremental(@Nonnull FileData fileData, @Nullable ClassVisitorChain chain)遍历工程中所有的增量文件,不仅仅是class,如果是jar则会解压之后将entry传递进来 状态可能为ADD,REMOVE,CHANGED这几种状态,只在增量构建时有效traverse all incremental file which status is ADD,REMOVE or CHANGED file will be uncompressed which is jar input. only valid while during incremental build
- Parameters:
fileData- 增量文件 incremental filechain- 如果是class,则会传递对应的ClassVisitorChain用于加入自定义的ClassVisitor,如果有不是class 则为null If it is a class, the corresponding ClassVisitorChain will be passed to add a custom ClassVisitor, or null if there is not a class
-
traverseIncremental
default void traverseIncremental(@Nonnull FileData fileData, @Nullable org.objectweb.asm.tree.ClassNode node)遍历工程中所有的增量文件,不仅仅是class,如果是jar则会解压之后将entry传递进来 状态可能为ADD,REMOVE,CHANGED这几种状态,只在增量构建时有效traverse all incremental file which status is ADD,REMOVE or CHANGED file will be uncompressed which is jar input. only valid while during incremental build
- Parameters:
fileData- 增量文件,该文件一定是class文件。 Incremental file, and the file must be a class file.node- 对应的Class解析后的的Tree Node结构 Tree Node
-
beforeTraverse
default void beforeTraverse(@Nonnull TransformEngine transformer)用于transform前的准备工作,在traverseIncremental之后,traverse方法之前执行。可以判断是否走增量 It is used for preparation before transform, and is executed after traverseIncremental and before traverse method. Can determine whether to take incremental- Parameters:
transformer- from TransformEngine
-
startRunning
default void startRunning(@Nonnull TransformEngine transformer)启动运行操作回调,表示马上开始处理过程。这个是traverse(java.lang.String, com.ss.android.ugc.bytex.common.visitor.ClassVisitorChain)方法前面的一个声明周期。此时增量状态已经完全确定,不能修改。 建议在此时判断在是否增量构建然后再加载增量cache. start to running。This lifecycle will be called beforetraverse(java.lang.String, com.ss.android.ugc.bytex.common.visitor.ClassVisitorChain)the incremental status has been determined and cannot be modified prefer to load incremental cache as it is running as incremental- Parameters:
transformer- from TransformEngine
-
traverse
void traverse(@Nonnull java.lang.String relativePath, @Nonnull ClassVisitorChain chain)遍历工程中所有的class Traverse all classes in the whole project.- Parameters:
relativePath- class的相对路径。 relative path of classchain- ClassVisitorChain用于加入自定义的ClassVisitor。 ASM visitor api. ClassVisitorChain is used for appending your custom ClassVisitor.
-
traverse
void traverse(@Nonnull java.lang.String relativePath, @Nonnull org.objectweb.asm.tree.ClassNode node)遍历工程中所有的class Traverse all classes in the whole project.- Parameters:
relativePath- class的相对路径。 relative path of classnode- class的数据结构(照顾喜欢用tree api的同学)。 ASM tree api.
-
traverseAndroidJar
void traverseAndroidJar(@Nonnull java.lang.String relativePath, @Nonnull ClassVisitorChain chain)遍历android.jar中所有的class Traverse all classes in android.jar.- Parameters:
relativePath- class的相对路径。 relative path of classchain- ClassVisitorChain用于加入自定义的ClassVisitor。 ASM visitor api. ClassVisitorChain is used for appending your custom ClassVisitor.
-
traverseAndroidJar
void traverseAndroidJar(@Nonnull java.lang.String relativePath, @Nonnull org.objectweb.asm.tree.ClassNode node)遍历android.jar中所有的class Traverse all classes in android.jar.- Parameters:
relativePath- class的相对路径。 relative path of classnode- class的数据结构(照顾喜欢用tree api的同学)。 ASM tree api.
-
beforeTransform
void beforeTransform(@Nonnull TransformEngine transformer)用于transform前的准备工作 Prepare for real transform.- Parameters:
transformer- from TransformEngine
-
transform
boolean transform(@Nonnull java.lang.String relativePath, @Nonnull ClassVisitorChain chain)handle 工程中的所有class To process all classed in the whole project.- Parameters:
relativePath- class的相对路径。 relative path of classchain- ClassVisitorChain用于注册自定义的ClassVisitor。 ASM visitor api. ClassVisitorChain is used for appending your custom ClassVisitor.- Returns:
- if false, this class file would be deleted, otherwise it would be output after transform.
-
transform
boolean transform(@Nonnull java.lang.String relativePath, @Nonnull org.objectweb.asm.tree.ClassNode node)handle 工程中的所有class To process all classed in the whole project.- Parameters:
relativePath- class的相对路径。 relative path of classnode- class的数据结构(照顾喜欢用tree api的同学)。。 ASM tree api.- Returns:
- if false, this class file would be deleted, otherwise it would be output after transform.
-
afterTransform
void afterTransform(@Nonnull TransformEngine transformer)用于transform完成后,进行各种illegal check It's usually used for plugin's custom illegal check after transform.- Parameters:
transformer- from TransformEngine
-
process
default java.util.List<FileProcessor> process(Process process)
在traverse和transform的过程中,加入自定义的FileProcessor,提供更大的灵活性。 Add custom FileProcessor during traverse or transform.- Parameters:
process- enum- Returns:
- list of FileProcessor
-
flagForClassReader
default int flagForClassReader(Process process)
Custom your own flag for ClassReader. By default, `ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES` for traverse, `0` for transform.- Parameters:
process- enum- Returns:
- flag for ClassReader.
-
flagForClassWriter
default int flagForClassWriter()
Custom your own flag for ClassWriter. By default, `ClassWriter.COMPUTE_MAXS` 默认应该是 ClassWriter.COMPUTE_MAXS,非特殊情况没必要复写- Returns:
- flag for ClassWriter.
-
needPreVerify
default boolean needPreVerify()
这个Handler是不是要求在真正执行前进行一次校验 Verify bytecode before transform.- Returns:
- if true, indicate that need to verify bytecode. Default is false.
-
needVerify
default boolean needVerify()
在执行完这个Handler后是否需要进行一次校验 Verify bytecode after transform.- Returns:
- if true, indicate that need to verify bytecode. Default is false.
-
isOnePassEnough
default boolean isOnePassEnough()
Whether skip traverse, do transform only.- Returns:
- if true, skip traverse(Note:ClassGraph will be invalid). Default is false.
-
-