/** * Given a set of potentially overlapping variant targetings generate smallest set of disjoint * variant targetings covering all of them. * * <p>Assumption: All Variants only support sdk targeting. */ public static ImmutableSet<VariantTargeting> generateAllVariantTargetings( ImmutableSet<VariantTargeting> variantTargetings) { if (variantTargetings.size() <= 1) { return variantTargetings; } ImmutableList<SdkVersionTargeting> sdkVersionTargetings = generateAllSdkTargetings( variantTargetings .stream() .map(variantTargeting -> variantTargeting.getSdkVersionTargeting()) .collect(toImmutableList())); return sdkVersionTargetings .stream() .map( sdkVersionTargeting -> VariantTargeting.newBuilder().setSdkVersionTargeting(sdkVersionTargeting).build()) .collect(toImmutableSet()); }
private static VariantTargeting standaloneApkVariantTargeting(ModuleSplit standaloneApk) { ApkTargeting apkTargeting = standaloneApk.getApkTargeting(); VariantTargeting.Builder variantTargeting = VariantTargeting.newBuilder(); if (apkTargeting.hasAbiTargeting()) { variantTargeting.setAbiTargeting(apkTargeting.getAbiTargeting()); } if (apkTargeting.hasScreenDensityTargeting()) { variantTargeting.setScreenDensityTargeting(apkTargeting.getScreenDensityTargeting()); } if (apkTargeting.hasMultiAbiTargeting()) { variantTargeting.setMultiAbiTargeting(apkTargeting.getMultiAbiTargeting()); } variantTargeting.setSdkVersionTargeting(sdkVersionTargeting(standaloneApk)); return variantTargeting.build(); }
public static VariantTargeting variantTargeting(SdkVersionTargeting sdkVersionTargeting) { return VariantTargeting.newBuilder().setSdkVersionTargeting(sdkVersionTargeting).build(); }
public static VariantTargeting variantSdkTargeting( SdkVersion sdkVersion, ImmutableSet<SdkVersion> alternatives) { return VariantTargeting.newBuilder() .setSdkVersionTargeting(sdkVersionTargeting(sdkVersion, alternatives)) .build(); }
private static VariantTargeting variantTargetingFromSdkVersion( SdkVersion values, ImmutableSet<SdkVersion> alternatives) { return VariantTargeting.newBuilder() .setSdkVersionTargeting(sdkVersionTargeting(values, alternatives)) .build(); } }