Sets.difference( allValues, ImmutableSet.copyOf(getValues(variantTargeting))))); return result.build(); }) .collect(toImmutableList());
/** * 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()); }
@Test public void variantMultiAbiTargeting_byMultipleAbisAndAlternatives() { VariantTargeting expectedTargeting = VariantTargeting.newBuilder().setMultiAbiTargeting(MULTI_ABI_WITH_ALTERNATIVES).build(); assertThat( TargetingUtils.variantMultiAbiTargeting( ImmutableSet.of(ImmutableSet.of(X86), ImmutableSet.of(ARMEABI_V7A, ARM64_V8A)), ImmutableSet.of(ImmutableSet.of(X86_64)))) .ignoringRepeatedFieldOrder() .isEqualTo(expectedTargeting); }
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(); }
@Test public void variantMultiAbiTargetingFromAllTergeting() { ImmutableSet<ImmutableSet<AbiAlias>> allTargeting = ImmutableSet.of( ImmutableSet.of(ARMEABI_V7A), ImmutableSet.of(ARM64_V8A), ImmutableSet.of(X86)); VariantTargeting expectedTargeting = VariantTargeting.newBuilder().setMultiAbiTargeting(SINGLE_ABI_WITH_ALTERNATIVES).build(); assertThat( TargetingUtils.variantMultiAbiTargetingFromAllTargeting( ImmutableSet.of(X86), allTargeting)) .ignoringRepeatedFieldOrder() .isEqualTo(expectedTargeting); }
public static VariantTargeting variantDensityTargeting( ScreenDensityTargeting screenDensityTargeting) { return VariantTargeting.newBuilder().setScreenDensityTargeting(screenDensityTargeting).build(); }
/** Builds variant targeting, of multi-Abi targeting only. */ public static VariantTargeting variantMultiAbiTargeting(MultiAbiTargeting multiAbiTargeting) { return VariantTargeting.newBuilder().setMultiAbiTargeting(multiAbiTargeting).build(); }
public static VariantTargeting variantAbiTargeting( AbiAlias value, ImmutableSet<AbiAlias> alternatives) { return VariantTargeting.newBuilder().setAbiTargeting(abiTargeting(value, alternatives)).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(); } }
public static VariantTargeting variantDensityTargeting( ScreenDensity value, ImmutableSet<ScreenDensity> alternatives) { return VariantTargeting.newBuilder() .setScreenDensityTargeting( ScreenDensityTargeting.newBuilder().addValue(value).addAllAlternatives(alternatives)) .build(); }
public static VariantTargeting variantAbiTargeting(Abi value, ImmutableSet<Abi> alternatives) { return VariantTargeting.newBuilder() .setAbiTargeting(AbiTargeting.newBuilder().addValue(value).addAllAlternatives(alternatives)) .build(); }
@Test public void variantMultiAbiTargeting_byAbiAliasAndAlternativesSet() { VariantTargeting expectedTargeting = VariantTargeting.newBuilder().setMultiAbiTargeting(SINGLE_ABI_WITH_ALTERNATIVES).build(); assertThat( TargetingUtils.variantMultiAbiTargeting(X86, ImmutableSet.of(ARMEABI_V7A, ARM64_V8A))) .isEqualTo(expectedTargeting); }
@Test public void variantMultiAbiTargeting_byMultiAbiTargeting() { VariantTargeting expectedTargeting = VariantTargeting.newBuilder().setMultiAbiTargeting(MULTI_ABI_WITH_ALTERNATIVES).build(); assertThat(TargetingUtils.variantMultiAbiTargeting(MULTI_ABI_WITH_ALTERNATIVES)) .ignoringRepeatedFieldOrder() .isEqualTo(expectedTargeting); }