Java源码示例:com.android.build.gradle.tasks.MergeManifests

示例1
private void modifyForIncremental(MergeManifests mergeManifests, List<ManifestProvider> allManifest) {
    if (appVariantContext.getAtlasExtension().getTBuildConfig().isIncremental()) {
        File mainManifest = mergeManifests.getMainManifest();
        File baseManifest = appVariantContext.apContext.getBaseModifyManifest();
        // allManifest.add(new ManifestHelper.MainManifestProvider(mainManifest, "main-manifest"));
        ConventionMappingHelper.map(mergeManifests, "mainManifest", new Callable<File>() {
            @Override
            public File call() throws Exception {
                return baseManifest;
            }
        });
        if (baseVariantOutput instanceof ApkVariantOutput) {
            // TODO Improve performance
            ApkVariantOutput variantOutputData = (ApkVariantOutput)baseVariantOutput;
            DefaultManifestParser manifestParser = new DefaultManifestParser(baseManifest);
            String versionNameOverride = variantOutputData.getVersionNameOverride();
            if (Strings.isNullOrEmpty(versionNameOverride)) {
                variantOutputData.setVersionNameOverride(manifestParser.getVersionName());
                GradleVariantConfiguration variantConfiguration = appVariantContext.getScope()
                    .getVariantConfiguration();
                ProductFlavor mergedFlavor = variantConfiguration.getMergedFlavor();
                String versionName = mergedFlavor.getVersionName();
                if (versionName == null) {
                    ((DefaultProductFlavor)mergedFlavor).setVersionName(manifestParser.getVersionName());
                }
            }
            int versionCodeOverride = variantOutputData.getVersionCodeOverride();
            if (versionCodeOverride == -1) {
                variantOutputData.setVersionCodeOverride(manifestParser.getVersionCode());
            }
        }
    }
}
 
示例2
public void createMergeAppManifestsTask(
        @NonNull TaskFactory tasks,
        @NonNull VariantScope variantScope) {

    ApplicationVariantData appVariantData =
            (ApplicationVariantData) variantScope.getVariantData();
    Set<String> screenSizes = appVariantData.getCompatibleScreens();

    // loop on all outputs. The only difference will be the name of the task, and location
    // of the generated manifest
    for (final BaseVariantOutputData vod : appVariantData.getOutputs()) {
        VariantOutputScope scope = vod.getScope();

        AndroidTask<CompatibleScreensManifest> csmTask = null;
        if (vod.getMainOutputFile().getFilter(DENSITY) != null) {
            csmTask = androidTasks.create(tasks,
                    new CompatibleScreensManifest.ConfigAction(scope, screenSizes));
            scope.setCompatibleScreensManifestTask(csmTask);
        }

        scope.setManifestProcessorTask(androidTasks.create(tasks,
                new MergeManifests.ConfigAction(scope)));

        if (csmTask != null) {
            scope.getManifestProcessorTask().dependsOn(tasks, csmTask);
        }
    }
}
 
示例3
@Override
    public void execute(Task task) {

        AtlasExtension atlasExtension = appVariantContext.getAtlasExtension();

        ManifestProcessorTask manifestProcessorTask = baseVariantOutput.getProcessManifest();

        Set<String> notMergedArtifacts = Sets.newHashSet();

        if (null != atlasExtension.getManifestOptions() && null != atlasExtension.getManifestOptions()
            .getNotMergedBundles()) {
            notMergedArtifacts = atlasExtension.getManifestOptions().getNotMergedBundles();
        }

        if (manifestProcessorTask instanceof MergeManifests) {

            MergeManifests mergeManifests = (MergeManifests)manifestProcessorTask;

            VariantScope variantScope = appVariantContext.getScope();
            GradleVariantConfiguration config = variantScope.getVariantConfiguration();
            AtlasDependencyTree dependencyTree = AtlasBuildContext.androidDependencyTrees.get(config.getFullName());

            List<ManifestProvider> bundleProviders = ManifestHelper.getBundleManifest(appVariantContext, dependencyTree,
                                                                                      atlasExtension);

            List<ManifestProvider> mainDexProviders = ManifestHelper.getMainDexManifest(appVariantContext, dependencyTree,
                    atlasExtension);

            List<ManifestProvider> allManifest = new ArrayList<>();
            modifyForIncremental(mergeManifests, allManifest);
//            allManifest.addAll(ManifestHelper.convert(mergeManifests.getProviders(), appVariantContext));
            allManifest.addAll(bundleProviders);
            allManifest.addAll(mainDexProviders);

            AtlasBuildContext.androidBuilderMap.get(appVariantContext.getProject()).manifestProviders = allManifest;

            mergeManifests.setAndroidBuilder(AtlasBuildContext.androidBuilderMap.get(appVariantContext.getProject()));
            //if (sLogger.isInfoEnabled()) {
            //    for (ManifestProvider manifestProvider : allManifest) {
            //        sLogger.warn("[manifestLibs] " + manifestProvider.getManifest().getAbsolutePath());
            //    }
            //}

            // Without this step, each time getLibraries It's going to be recomputed from the mapping
//            mergeManifests.(allManifest);
        }
    }
 
示例4
public File getModifiedManifest(ResolvedArtifactResult artifact) {
    return new File(getModifyManifestDir(),
            MergeManifests.getArtifactName(artifact) +
                    ".xml");

}