zoukankan      html  css  js  c++  java
  • hook原生打包流程

    将实际执行的Transform换成了MatrixTraceTransform

    public static void inject(Project project, def variant) {
    //获取Matrix trace的gradle配置参数
    def configuration = project.matrix.trace
    //hook的Task名
    String hackTransformTaskName = getTransformTaskName(
    configuration.hasProperty('customDexTransformName') ? configuration.customDexTransformName : "",
    "",variant.name
    )
    //同上
    String hackTransformTaskNameForWrapper = getTransformTaskName(
    configuration.hasProperty('customDexTransformName') ? configuration.customDexTransformName : "",
    "Builder",variant.name
    )

    project.logger.info("prepare inject dex transform :" + hackTransformTaskName +" hackTransformTaskNameForWrapper:"+hackTransformTaskNameForWrapper)

    project.getGradle().getTaskGraph().addTaskExecutionGraphListener(new TaskExecutionGraphListener() {
    @Override
    public void graphPopulated(TaskExecutionGraph taskGraph) {
    for (Task task : taskGraph.getAllTasks()) {
    //找到需要hook的Task名称
    if ((task.name.equalsIgnoreCase(hackTransformTaskName) || task.name.equalsIgnoreCase(hackTransformTaskNameForWrapper))
    && !(((TransformTask) task).getTransform() instanceof MatrixTraceTransform)) {
    project.logger.warn("find dex transform. transform class: " + task.transform.getClass() + " . task name: " + task.name)
    project.logger.info("variant name: " + variant.name)
    Field field = TransformTask.class.getDeclaredField("transform")
    field.setAccessible(true)
    //反射替换成MatrixTraceTransform,并将原transform传入,最后执行原transform逻辑
    field.set(task, new MatrixTraceTransform(project, variant, task.transform))
    project.logger.warn("transform class after hook: " + task.transform.getClass())
    break
    }
    }
    }
    })

  • 相关阅读:
    bzoj 5092: [Lydsy1711月赛]分割序列
    bzoj1173: [Balkan2007]Point
    bzoj1536: [POI2005]Akc- Special Forces Manoeuvres
    bzoj2178: 圆的面积并
    bzoj1043 下落的圆盘
    bzoj2674 Attack
    bzoj1201: [HNOI2005]数三角形
    bzoj3135: [Baltic2013]pipesd
    bzoj1760 [Baltic2009]Triangulation
    bzoj3136
  • 原文地址:https://www.cnblogs.com/ly570/p/11291180.html
Copyright © 2011-2022 走看看