Java源码示例:com.android.build.gradle.api.BaseVariantOutput

示例1
public void replaceDexMerge(BaseVariantOutput vod) {
    List<TransformTask> list = TransformManager.findTransformTaskByTransformType(variantContext,
            DexMergerTransform.class);
    DexingType dexingType = variantContext.getScope().getDexingType();
    if (variantContext.getScope().getInstantRunBuildContext().isInInstantRunMode() && variantContext.getVariantConfiguration().getMinSdkVersion().getApiLevel() < 21) {
        dexingType = DexingType.LEGACY_MULTIDEX;
    }
    DexMergerTool dexMergerTool = variantContext.getScope().getDexMerger();
    int sdkVerision = variantContext.getScope().getMinSdkVersion().getFeatureLevel();
    boolean debug = variantContext.getScope().getVariantConfiguration().getBuildType().isDebuggable();
    ErrorReporter errorReporter = variantContext.getScope().getGlobalScope().getAndroidBuilder().getErrorReporter();
    for (TransformTask transformTask : list) {
        AtlasDexMergerTransform dexMergerTransform = new AtlasDexMergerTransform(
                variantContext.getAppVariantOutputContext(ApkDataUtils.get(vod))
                , dexingType,
                dexingType == DexingType.LEGACY_MULTIDEX
                        ? variantContext.getProject().files(variantContext.getScope().getMainDexListFile())
                        : null,
                errorReporter, dexMergerTool, sdkVerision, debug);
        ReflectUtils.updateField(transformTask, "transform", dexMergerTransform);

    }
}
 
示例2
public void replaceMergeJavaResourcesTransform(AppVariantContext appVariantContext, BaseVariantOutput vod) {
    List<TransformTask> baseTransforms = TransformManager.findTransformTaskByTransformType(
            variantContext, MergeJavaResourcesTransform.class);
    for (TransformTask transformTask : baseTransforms) {
        MergeJavaResourcesTransform transform = (MergeJavaResourcesTransform) transformTask.getTransform();
        PackagingOptions packagingOptions = (PackagingOptions) ReflectUtils.getField(transform, "packagingOptions");
        packagingOptions.exclude("**.aidl");
        packagingOptions.exclude("**.cfg");
        Set<? super QualifiedContent.Scope> mergeScopes = (Set<? super QualifiedContent.Scope>) ReflectUtils.getField(transform, "mergeScopes");
        Set<QualifiedContent.ContentType> mergedType = (Set<QualifiedContent.ContentType>) ReflectUtils.getField(transform, "mergedType");
        String name = (String) ReflectUtils.getField(transform, "name");
        AtlasMergeJavaResourcesTransform atlasMergeJavaResourcesTransform = new AtlasMergeJavaResourcesTransform(appVariantContext.getAppVariantOutputContext(ApkDataUtils.get(vod)), packagingOptions, mergeScopes, mergedType.iterator().next(), name, appVariantContext.getScope());
        ReflectUtils.updateField(transformTask, "transform",
                atlasMergeJavaResourcesTransform);
    }

}
 
示例3
public void replaceDesugarTransform(BaseVariantOutput vod) {
    List<TransformTask> baseTransforms = TransformManager.findTransformTaskByTransformType(
            variantContext, DesugarTransform.class);
    for (TransformTask transformTask : baseTransforms) {
        DesugarTransform transform = (DesugarTransform) transformTask.getTransform();
        AtlasDesugarTransform atlasDesugarTransform = new AtlasDesugarTransform(
                variantContext.getAppVariantOutputContext(ApkDataUtils.get(vod)),
                (Supplier<List<File>>) ReflectUtils.getField(transform, "androidJarClasspath"),
                (List) ReflectUtils.getField(transform, "compilationBootclasspath"),
                variantContext.getScope().getGlobalScope().getBuildCache(),
                (int) ReflectUtils.getField(transform, "minSdk"),
                (JavaProcessExecutor) ReflectUtils.getField(transform, "executor"),
                (boolean) ReflectUtils.getField(transform, "verbose"),
                (boolean) ReflectUtils.getField(transform, "enableGradleWorkers"),
                (Path) ReflectUtils.getField(transform, "tmpDir"));
        atlasDesugarTransform.oldTransform = transform;
        ReflectUtils.updateField(transformTask, "transform",
                atlasDesugarTransform);
    }
}
 
示例4
public static Collection<File> getTransformInputs(AppVariantContext appVariantContext,
        TransformInvocation invocation) {
    ImmutableSet.Builder<File> builder = ImmutableSet.builder();
    Collection<File> transformInputs = TransformInputUtil.getAllFiles(invocation.getInputs());
    builder.addAll(transformInputs);
    AtlasDependencyTree atlasDependencyTree = AtlasBuildContext.androidDependencyTrees.get(
            appVariantContext.getVariantConfiguration().getFullName());

    if (atlasDependencyTree.getAwbBundles().size() > 0) {

        BaseVariantOutput vod =
                (BaseVariantOutput) appVariantContext.getVariantOutputData().iterator().next();
        AppVariantOutputContext appVariantOutputContext =
                appVariantContext.getAppVariantOutputContext(ApkDataUtils.get(vod));
        Collection<AwbTransform> awbTransforms =
                appVariantOutputContext.getAwbTransformMap().values();
        awbTransforms.forEach(awbTransform -> {
            builder.addAll(awbTransform.getInputLibraries());
        });
    }
    return builder.build();
}
 
示例5
public static <T extends Transform> T createTransform(AppVariantContext appVariantContext,
                                                      Class<T> clazz, BaseVariantOutput vod) {

    if (null == clazz) {
        return null;
    }
    try {

        return (T)getConstructor(appVariantContext, clazz,ApkDataUtils.get(vod)).newInstance(
            appVariantContext, ApkDataUtils.get(vod));

    } catch (Throwable e) {
        e.printStackTrace();
    }
    return null;

}
 
示例6
private Constructor<? extends MtlBaseTaskAction> getConstructor(Class<? extends MtlBaseTaskAction> baseTaskAction,
                                                                Class variantClazz) throws NoSuchMethodException {

    try {
        return baseTaskAction.getConstructor(variantClazz, BaseVariantOutput.class);
    } catch (NoSuchMethodException ex1) {

        Class superClazz = variantClazz.getSuperclass();

        if (null != superClazz) {
            return getConstructor(baseTaskAction, superClazz);
        } else {
            throw ex1;
        }

    }

}
 
示例7
public TaobaoInstantRunDex(
        AppVariantContext variantContext,
        @NonNull InstantRunVariantScope transformVariantScope,
        DexByteCodeConverter dexByteCodeConverter,
        @NonNull DexOptions dexOptions,
        @NonNull Logger logger,
        int minSdkForDx,
        BaseVariantOutput variantOutput) {
    this.variantScope = transformVariantScope;
    this.variantContext = variantContext;
    this.dexByteCodeConverter = dexByteCodeConverter;
    this.dexOptions = dexOptions;
    this.logger = new LoggerWrapper(logger);
    this.minSdkForDx = minSdkForDx;
    this.variantOutput = variantOutput;
}
 
示例8
@Override
@NonNull
public LibraryVariant createVariantApi(
        @NonNull BaseVariantData<? extends BaseVariantOutputData> variantData,
        @NonNull ReadOnlyObjectProvider readOnlyObjectProvider) {
    LibraryVariantImpl variant = instantiator.newInstance(
            LibraryVariantImpl.class, variantData, androidBuilder, readOnlyObjectProvider);

    // now create the output objects
    List<? extends BaseVariantOutputData> outputList = variantData.getOutputs();
    List<BaseVariantOutput> apiOutputList = Lists.newArrayListWithCapacity(outputList.size());

    for (BaseVariantOutputData variantOutputData : outputList) {
        LibVariantOutputData libOutput = (LibVariantOutputData) variantOutputData;

        LibraryVariantOutputImpl output = instantiator.newInstance(
                LibraryVariantOutputImpl.class, libOutput);

        apiOutputList.add(output);
    }

    variant.addOutputs(apiOutputList);

    return variant;
}
 
示例9
public static void createApkOutputApiObjects(
        @NonNull Instantiator instantiator,
        @NonNull BaseVariantData<? extends BaseVariantOutputData> variantData,
        @NonNull ApkVariantImpl variant) {
    List<? extends BaseVariantOutputData> outputList = variantData.getOutputs();
    List<BaseVariantOutput> apiOutputList = Lists.newArrayListWithCapacity(outputList.size());

    for (BaseVariantOutputData variantOutputData : outputList) {
        ApkVariantOutputData apkOutput = (ApkVariantOutputData) variantOutputData;

        ApkVariantOutputImpl output = instantiator.newInstance(
                ApkVariantOutputImpl.class, apkOutput);

        apiOutputList.add(output);
    }

    variant.addOutputs(apiOutputList);
}
 
示例10
public AtlasDexArchiveBuilderTransform(AppVariantContext variantContext, VariantOutput variantOutput,
                                       @NonNull DexOptions dexOptions,
                                       @NonNull ErrorReporter errorReporter,
                                       @Nullable FileCache userLevelCache,
                                       int minSdkVersion,
                                       @NonNull DexerTool dexer,
                                       boolean useGradleWorkers,
                                       @Nullable Integer inBufferSize,
                                       @Nullable Integer outBufferSize,
                                       boolean isDebuggable) {

    this.variantContext = variantContext;
    this.variantOutput = (BaseVariantOutput) variantOutput;
    this.dexOptions = dexOptions;
    this.errorReporter = errorReporter;
    this.minSdkVersion = minSdkVersion;
    this.dexer = dexer;
    this.executor = WaitableExecutor.useGlobalSharedThreadPool();
    this.cacheHandler =
            new AtlasDexArchiveBuilderCacheHander(variantContext.getProject(),
                    userLevelCache, dexOptions, minSdkVersion, isDebuggable, dexer);
    this.useGradleWorkers = useGradleWorkers;
    this.inBufferSize =
            (inBufferSize == null ? DEFAULT_BUFFER_SIZE_IN_KB : inBufferSize) * 1024;
    this.outBufferSize =
            (outBufferSize == null ? DEFAULT_BUFFER_SIZE_IN_KB : outBufferSize) * 1024;
    this.isDebuggable = isDebuggable;

}
 
示例11
public void replaceDexArchiveBuilderTransform(BaseVariantOutput vod) {
    List<TransformTask> list = TransformManager.findTransformTaskByTransformType(variantContext,
            DexArchiveBuilderTransform.class);

    DefaultDexOptions dexOptions = variantContext.getAppExtension().getDexOptions();

    boolean minified = variantContext.getScope().getCodeShrinker() != null;

    ProjectOptions projectOptions = variantContext.getScope().getGlobalScope().getProjectOptions();

    FileCache userLevelCache = getUserDexCache(minified, dexOptions.getPreDexLibraries());
    for (TransformTask transformTask : list) {
        AtlasDexArchiveBuilderTransform atlasDexArchiveBuilderTransform = new AtlasDexArchiveBuilderTransform(variantContext, vod,
                dexOptions,
                variantContext.getScope().getGlobalScope().getAndroidBuilder().getErrorReporter(),
                userLevelCache,
                variantContext.getScope().getMinSdkVersion().getFeatureLevel(),
                variantContext.getScope().getDexer(),
                projectOptions.get(BooleanOption.ENABLE_GRADLE_WORKERS),
                projectOptions.get(IntegerOption.DEXING_READ_BUFFER_SIZE),
                projectOptions.get(IntegerOption.DEXING_WRITE_BUFFER_SIZE),
                variantContext.getScope().getVariantConfiguration().getBuildType().isDebuggable());
        atlasDexArchiveBuilderTransform.setTransformTask(transformTask);
        ReflectUtils.updateField(transformTask, "transform", atlasDexArchiveBuilderTransform);
        if (variantContext.getScope().getInstantRunBuildContext().isInInstantRunMode() && variantContext.getVariantConfiguration().getMinSdkVersion().getApiLevel() < 21) {
            transformTask.doLast(task -> {
                task.getLogger().info("generate maindexList......");
                generateMainDexList(variantContext.getScope());

            });
        }

    }

}
 
示例12
public void replaceDexExternalLibMerge(BaseVariantOutput vod) {
    List<TransformTask> list = TransformManager.findTransformTaskByTransformType(variantContext,
            ExternalLibsMergerTransform.class);
    for (TransformTask transformTask : list) {
        transformTask.setEnabled(false);


    }
}
 
示例13
public void replaceDexTransform(AppVariantContext appVariantContext, BaseVariantOutput vod) {
    List<TransformTask> baseTransforms = TransformManager.findTransformTaskByTransformType(
            variantContext, DexTransform.class);

    DefaultDexOptions dexOptions = appVariantContext.getAppExtension().getDexOptions();
    DexingType dexingType = appVariantContext.getScope().getDexingType();
    DexByteCodeConverterHook dexByteCodeConverterHook = new DexByteCodeConverterHook(variantContext
            , variantContext.getAppVariantOutputContext(ApkDataUtils.get(vod))
            , LoggerWrapper.getLogger(DexByteCodeConverterHook.class)
            , appVariantContext.getScope().getGlobalScope().getAndroidBuilder().getTargetInfo()
            , new GradleJavaProcessExecutor(appVariantContext.getProject())
            , appVariantContext.getProject().getLogger().isEnabled(LogLevel.INFO)
            , new ExtraModelInfo(appVariantContext.getScope().getGlobalScope().getProjectOptions(), appVariantContext.getProject().getLogger()));

    for (TransformTask transformTask : baseTransforms) {
        DexTransform newTransform = new DexTransform(dexOptions
                , dexingType
                , false
                , appVariantContext.getProject().files(variantContext.getScope().getMainDexListFile())
                , verifyNotNull(appVariantContext.getScope().getGlobalScope().getAndroidBuilder().getTargetInfo(), "Target Info not set.")
                , dexByteCodeConverterHook
                , appVariantContext.getScope().getGlobalScope().getAndroidBuilder().getErrorReporter()
                , variantContext.getScope().getMinSdkVersion().getFeatureLevel());
        ReflectUtils.updateField(transformTask, "transform",
                newTransform);
    }

}
 
示例14
public void replaceFixStackFramesTransform(BaseVariantOutput vod) {
    List<TransformTask> baseTransforms = TransformManager.findTransformTaskByTransformType(
            variantContext, FixStackFramesTransform.class);
    for (TransformTask transformTask : baseTransforms) {
        FixStackFramesTransform transform = (FixStackFramesTransform) transformTask.getTransform();

        AtlasFixStackFramesTransform atlasFixStackFramesTransform = new AtlasFixStackFramesTransform(variantContext.getAppVariantOutputContext(ApkDataUtils.get(vod)), (Supplier<List<File>>) ReflectUtils.getField(transform, "androidJarClasspath"), (List<Path>) ReflectUtils.getField(transform, "compilationBootclasspath"), (FileCache) ReflectUtils.getField(transform, "userCache"));
        atlasFixStackFramesTransform.oldTransform = transform;
        ReflectUtils.updateField(transformTask, "transform",
                atlasFixStackFramesTransform);
    }
}
 
示例15
@Override
public Task createTask(VariantContext variantContext, BaseVariantOutput vod,
                       Class<? extends MtlBaseTaskAction> baseTaskAction) {

    if (null == baseTaskAction) {
        return null;
    }

    try {

        MtlBaseTaskAction mtlBaseTaskAction = getConstructor(baseTaskAction, variantContext.getClass()).newInstance(
            variantContext, vod);

        Task task = variantContext.getProject().getTasks().findByName(mtlBaseTaskAction.getName());

        if (null == task) {
            task = variantContext.getProject().getTasks().create(mtlBaseTaskAction.getName(),
                                                                 mtlBaseTaskAction.getType());
            mtlBaseTaskAction.execute(task);
        } else {
            sLogger.info(mtlBaseTaskAction.getName() + " is already added");
        }

        return task;

    } catch (Throwable e) {
        //sLogger.error("add task exception", e);
        throw new GradleException(e.getMessage(),e);
    }

    //return null;
}
 
示例16
public MtlBaseTaskAction(VariantContext variantContext,
                         BaseVariantOutput baseVariantOutput) {
    this.variantContext = variantContext;
    this.baseVariantData = variantContext.getBaseVariantData();
    this.scope = baseVariantData.getScope();
    this.baseVariantOutput = baseVariantOutput;
}
 
示例17
public ConfigAction(AppVariantContext appVariantContext,
                    BaseVariantOutput baseVariantOutputData) {
    super(appVariantContext, baseVariantOutputData);

    this.appVariantContext = appVariantContext;
    GradleVariantConfiguration config = scope.getVariantConfiguration();
    dependencyTree = AtlasBuildContext.androidDependencyTrees.get(config.getFullName());
}
 
示例18
public MergeAwbResourceConfigAction(VariantContext variantContext,
                                    BaseVariantOutput baseVariantOutput,
                                    AwbBundle awbBundle) {
    super(variantContext, baseVariantOutput);
    this.variantContext = variantContext;
    this.awbBundle = awbBundle;
    this.scope = variantContext.getScope();
    this.outputLocation = variantContext.getMergeResources(awbBundle);
    this.mergedNotCompiledOutputDirectory = variantContext.getMergeNotCompiledFolder(awbBundle);
    this.includeDependencies = true;
    this.processResources = true;
}
 
示例19
public MergeAwbAssetConfigAction(VariantContext variantContext, BaseVariantOutput baseVariantOutput, AwbBundle awbBundle) {
    super(variantContext, baseVariantOutput);
    this.variantContext = variantContext;
    this.scope = variantContext.getScope();
    this.awbBundle = awbBundle;
    this.outputDir = variantContext.getMergeAssets(awbBundle);
}
 
示例20
public AwbPackagingScope(VariantScope variantOutputScope, AppVariantContext appVariantContext,
                         AwbBundle awbBundle, BaseVariantOutput variantOutput) {
    super(variantOutputScope);
    this.variantScope = variantOutputScope;
    this.globalScope = variantScope.getGlobalScope();
    this.appVariantContext = appVariantContext;
    config = variantScope.getVariantConfiguration();
    appVariantOutputContext = appVariantContext.getAppVariantOutputContext(ApkDataUtils.get(variantOutput));
    this.awbBundle = awbBundle;
}
 
示例21
public ConfigAction(VariantScope scope, File symbolLocation, boolean generateResourcePackage, AwbBundle awbBundle, AndroidBuilder androidBuilder, AppVariantOutputContext appVariantOutputContext, BaseVariantOutput variantOutput) {
    this.scope = scope;
    this.symbolLocation = symbolLocation;
    this.generateResourcePackage = generateResourcePackage;
    this.awbBundle = awbBundle;
    this.tAndroidBuilder = androidBuilder;
    this.appVariantOutputContext = appVariantOutputContext;
    this.variantOutput = variantOutput;
}
 
示例22
public static File applyBundleInOutConfigration(final AppVariantContext appVariantContext,
                                                ProGuardTransform proGuardTransform) {

    VariantScope variantScope = appVariantContext.getScope();

    GlobalScope globalScope = variantScope.getGlobalScope();
    File proguardOut = new File(Joiner.on(File.separatorChar)
                                    .join(String.valueOf(globalScope.getBuildDir()), FD_OUTPUTS, "mapping",
                                          variantScope.getVariantConfiguration().getDirName()));

    File awbInOutConfig = new File(proguardOut, "awb_inout_config.cfg");

    //Add awb configuration
    AtlasDependencyTree dependencyTree = AtlasBuildContext.androidDependencyTrees.get(
        variantScope.getVariantConfiguration().getFullName());

    if (dependencyTree.getAwbBundles().size() > 0) {

        BaseVariantOutput vod = (BaseVariantOutput) appVariantContext.getVariantOutputData().iterator().next();
        AppVariantOutputContext appVariantOutputContext = appVariantContext.getAppVariantOutputContext(ApkDataUtils.get(vod));
        File awbObfuscatedDir = new File(globalScope.getIntermediatesDir(),
                                         "/classes-proguard/" + variantScope.getVariantConfiguration()
                                             .getDirName());
        AwbProguardConfiguration awbProguardConfiguration = new AwbProguardConfiguration(
            appVariantOutputContext.getAwbTransformMap().values(), awbObfuscatedDir, appVariantOutputContext);

        try {
            configs = awbProguardConfiguration.printConfigFile(awbInOutConfig);
        } catch (IOException e) {
            throw new GradleException("", e);
        }

        proGuardTransform.setConfigurationFiles(appVariantContext.getScope().getGlobalScope().getProject().files(awbInOutConfig));

    }

    return awbInOutConfig;
}
 
示例23
public File applyBundleInOutConfigration(final AppVariantContext appVariantContext) {

        VariantScope variantScope = appVariantContext.getScope();

        GlobalScope globalScope = variantScope.getGlobalScope();
        File proguardOut = new File(Joiner.on(File.separatorChar)
                .join(String.valueOf(globalScope.getBuildDir()), FD_OUTPUTS, "mapping",
                        variantScope.getVariantConfiguration().getDirName()));

        File awbInOutConfig = new File(proguardOut, "awb_inout_config.cfg");

        //Add awb configuration
        AtlasDependencyTree dependencyTree = AtlasBuildContext.androidDependencyTrees.get(
                variantScope.getVariantConfiguration().getFullName());

        if (dependencyTree.getAwbBundles().size() > 0) {
            BaseVariantOutput vod = (BaseVariantOutput) appVariantContext.getVariantOutputData().iterator().next();
            AppVariantOutputContext appVariantOutputContext = appVariantContext.getAppVariantOutputContext(ApkDataUtils.get(vod));
            File awbObfuscatedDir = new File(globalScope.getIntermediatesDir(),
                    "/classes-proguard/" + variantScope.getVariantConfiguration()
                            .getDirName());
            AwbProguardConfiguration awbProguardConfiguration = new AwbProguardConfiguration(
                    appVariantOutputContext.getAwbTransformMap().values(), awbObfuscatedDir, appVariantOutputContext);

            try {
                awbProguardConfiguration.printConfigFile(awbInOutConfig);
            } catch (IOException e) {
                throw new GradleException("", e);
            }

            defaultProguardFiles.add(awbInOutConfig);

        }

        return awbInOutConfig;
    }
 
示例24
private File getApkFile(AndroidPublisherExtension publisherExtension) {
	String variantName = publisherExtension.getVariantName();
	DomainObjectSet<ApplicationVariant> variants = getProject().getExtensions().getByType(AppExtension.class).getApplicationVariants();
	ApplicationVariant variant = null;
	getLogger().info(String.format("Looking for %s variant in outputs", variantName));
	for (ApplicationVariant v : variants) {
		getLogger().debug(String.format("Found variant %s", v.getName()));
		if (v.getName().equals(variantName)) {
			getLogger().debug(String.format("Variant %s will be used", variantName));
			variant = v;
			break;
		}
	}
	if (variant == null) {
		throw new InvalidUserDataException(String.format(
				"Cannot find %s variant for android configuration", variantName));
	}

	for(BaseVariantOutput output : variant.getOutputs()) {
		getLogger().debug(String.format("Found output %s (%s)", output.getName(), output.getBaseName()));
		if (output!=null) {
			getLogger().debug(String.format("Output %s will be used", output.getName()));
			return output.getOutputFile();
		}
	}
	throw new InvalidUserDataException(String.format(
			"Cannot find APK output file for %s variant", variantName));
}
 
示例25
public ConfigAction(VariantContext variantContext, BaseVariantOutput baseVariantOutput) {
    super(variantContext, baseVariantOutput);
    this.featureVariantContext = (FeatureVariantContext) variantContext;
}
 
示例26
public ConfigAction(VariantContext variantContext, BaseVariantOutput baseVariantOutput) {
    super(variantContext, baseVariantOutput);
}
 
示例27
public void injectTasks(List<MtlTransformContext> mtlTaskContexts) {



        for (final Object vod : appVariantContext.getVariantOutputData()) {

            for (MtlTransformContext mtlTransformContext : mtlTaskContexts) {

                TransformTask transformTask = findTransformTask(mtlTransformContext);

                TransformTask injectedTask = appVariantContext.getInjectTransformManager()
                    .addInjectTransformBeforeTransform(transformTask.getTransform().getClass(),
                                                       TransformManager.createTransform(appVariantContext,
                                                                                        mtlTransformContext
                                                                                            .getTransformTask(), (BaseVariantOutput) vod),
                                                       appVariantContext.getScope());

                injectedTask.dependsOn(appVariantContext.getVariantData().compileTask);

            }

        }

    }
 
示例28
public ConfigAction(AppVariantContext appVariantContext,
                    BaseVariantOutput baseVariantOutputData) {
    super(appVariantContext, baseVariantOutputData);
    this.appVariantContext = appVariantContext;
}
 
示例29
public ConfigAction(AppVariantContext appVariantContext,
                    BaseVariantOutput baseVariantOutputData) {
    super(appVariantContext, baseVariantOutputData);
    this.appVariantContext = appVariantContext;
}
 
示例30
public ConfigAction(AppVariantContext appVariantContext, BaseVariantOutput baseVariantOutputData) {
    super(appVariantContext, baseVariantOutputData);
    this.appVariantContext = appVariantContext;
}