欢迎访问本站!

首页快讯正文

usdt交易所(www.caibao.it):写个更牛逼的Transform | Plugin 进阶教程

admin2021-02-2825

USDT官网

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

原题目:写个更牛逼的Transform | Plugin 进阶教程

本文作者

  1. ADDED、CHANGED 由于我们都是先用 temp 然后笼罩当前文件,以是接纳同样的处理方式。
  2. REMOVED 删除当前文件夹下的该历史文件。

com.kronos.plugin.base

{

: ByteArray?

}

  1. 所有的输入文件先举行第一次文件拷贝操作
  2. forecah 遍历将每一个文件操作压入线程池中执行
  3. 获取文件名以及 byte 数组 挪用我们界说的抽象接口
  4. 凭据 interface 返回的 byte 天生 temp 文件,然后举行文件笼罩操作
  5. 线程池守候所有义务执行完成之后竣事 transform

{

String EXT_NAME = ;

{

isApp = project.getPlugins.hasPlugin(AppPlugin.class);

project.getExtensions.create(EXT_NAME, DoubleTabConfig.class);

project.afterEvaluate(project1 -> {

DoubleTabConfig config = (DoubleTabConfig) project1.getExtensions.findByName(EXT_NAME);

(config == ) {

config = DoubleTabConfig;

}

config.transform;

});

(isApp) {

AppExtension appExtension = project.getExtensions.getByType(AppExtension.class);

appExtension.registerTransform( DoubleTapAppTransform);

;

}

(project.getPlugins.hasPlugin( )) {

LibraryExtension libraryExtension = project.getExtensions.getByType(LibraryExtension.class);

libraryExtension.registerTransform( DoubleTapLibraryTransform);

}

}

}

{

: MutableSet< QualifiedContent.Scope> {

ImmutableSet.of(

QualifiedContent.Scope.PROJECT

)

}

: Set<QualifiedContent.ContentType>? {

TransformManager.CONTENT_CLASS

}

}

,

usdt支付接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

classNodeMap = hashMapOf<String, ClassNode>

: ByteArray {

classNode = ClassNode(A *** 5)

classReader = ClassReader(srcClass)

classReader.accept(classNode, )

classNodeMap[classNode.name] = classNode

classNode.interfaces?.forEach {

(it == ) {

field = classNode.getField

classNode.methods?.forEach { method ->

insertTrack(classNode, method, field)

}

}

}

visitFragment(classNode)

classWriter = ClassWriter( )

classNode.accept(classWriter)

classWriter.toByteArray

}

{

(method.name == && method.desc == ) {

className = node.outerClass

parentNode = classNodeMap[className]

parentField = field ?: parentNode?.getField

instructions = method.instructions

instructions?.iterator?.forEach {

((it.opcode >= Opcodes.IRETURN && it.opcode <= Opcodes.RETURN) || it.opcode == Opcodes.ATHROW) {

instructions.insertBefore(it, VarInsnNode(Opcodes.ALOAD, ))

instructions.insertBefore(it, VarInsnNode(Opcodes.ALOAD, ))

(parentField != ) {

parentField.apply {

instructions.insertBefore(it, VarInsnNode(Opcodes.ALOAD, ))

instructions.insertBefore(

it, FieldInsnNode(Opcodes.GETFIELD, node.name, parentField.name, parentField.desc)

)

}

} {

instructions.insertBefore(it, LdcInsnNode( ))

}

instructions.insertBefore(

it, MethodInsnNode(

Opcodes.INVOKESTATIC,

,

,

,

)

)

}

}

}

}

: FieldNode? {

fields?.firstOrNull { field ->

hasAnnotation =

field?.visibleAnnotations?.forEach { ->

( .desc == ) {

hasAnnotation =

}

}

hasAnnotation

}

}

}

网友评论