private ApkTargeting generateTargeting(ApkTargeting splitTargeting, T extraTargeting) { if (isDefaultTargeting(extraTargeting)) { return splitTargeting; } return splitTargeting.toBuilder().mergeFrom(targetingSetter.apply(extraTargeting)).build(); }
@Test public void apkMultiAbiTargetingFromAllTergeting() { ImmutableSet<ImmutableSet<AbiAlias>> allTargeting = ImmutableSet.of( ImmutableSet.of(ARMEABI_V7A), ImmutableSet.of(ARM64_V8A), ImmutableSet.of(X86)); ApkTargeting expectedTargeting = ApkTargeting.newBuilder().setMultiAbiTargeting(SINGLE_ABI_WITH_ALTERNATIVES).build(); assertThat( TargetingUtils.apkMultiAbiTargetingFromAllTargeting(ImmutableSet.of(X86), allTargeting)) .ignoringRepeatedFieldOrder() .isEqualTo(expectedTargeting); }
@Test public void apkMultiAbiTargeting_byMultipleAbisAndAlternatives() { ApkTargeting expectedTargeting = ApkTargeting.newBuilder().setMultiAbiTargeting(MULTI_ABI_WITH_ALTERNATIVES).build(); assertThat( TargetingUtils.apkMultiAbiTargeting( ImmutableSet.of(ImmutableSet.of(X86), ImmutableSet.of(ARMEABI_V7A, ARM64_V8A)), ImmutableSet.of(ImmutableSet.of(X86_64)))) .ignoringRepeatedFieldOrder() .isEqualTo(expectedTargeting); }
@Test public void notPossibleToTargetMultipleDimensions() { String fakeAssetPath = "testModule/assets/secret.txt"; ModuleSplit.Builder builder = ModuleSplit.builder() .setModuleName(BundleModuleName.create("testModule")) .setEntries(ImmutableList.of(InMemoryModuleEntry.ofFile(fakeAssetPath, DUMMY_CONTENT))) .setVariantTargeting(lPlusVariantTargeting()) .setApkTargeting( ApkTargeting.newBuilder() .setAbiTargeting( AbiTargeting.newBuilder().addValue(Abi.newBuilder().setAlias(AbiAlias.X86))) .setScreenDensityTargeting( ScreenDensityTargeting.newBuilder() .addValue( ScreenDensity.newBuilder().setDensityAlias(DensityAlias.HDPI))) .build()); assertThrows(IllegalStateException.class, () -> builder.build()); }
public ModuleSplit build() { ModuleSplit moduleSplit = autoBuild(); if (moduleSplit.isMasterSplit()) { checkState( moduleSplit .getApkTargeting() .toBuilder() .clearSdkVersionTargeting() .build() .equals(ApkTargeting.getDefaultInstance()), "Master split cannot have any targeting other than SDK version."); } return moduleSplit; } }
public static ApkTargeting apkGraphicsTargeting(GraphicsApiTargeting graphicsTargeting) { return ApkTargeting.newBuilder().setGraphicsApiTargeting(graphicsTargeting).build(); }
private static ApkTargeting fromGraphicsApi(GraphicsApiTargeting targeting) { return ApkTargeting.newBuilder().setGraphicsApiTargeting(targeting).build(); }
private static ApkTargeting fromLanguage(LanguageTargeting targeting) { return ApkTargeting.newBuilder().setLanguageTargeting(targeting).build(); }
public static ApkTargeting apkLanguageTargeting(LanguageTargeting languageTargeting) { return ApkTargeting.newBuilder().setLanguageTargeting(languageTargeting).build(); }
public static ApkTargeting apkDensityTargeting(ScreenDensityTargeting screenDensityTargeting) { return ApkTargeting.newBuilder().setScreenDensityTargeting(screenDensityTargeting).build(); }
/** Builds APK targeting, of multi-Abi targeting only. */ public static ApkTargeting apkMultiAbiTargeting(MultiAbiTargeting multiAbiTargeting) { return ApkTargeting.newBuilder().setMultiAbiTargeting(multiAbiTargeting).build(); }
private static ApkTargeting fromTextureCompressionFormat( TextureCompressionFormatTargeting targeting) { return ApkTargeting.newBuilder().setTextureCompressionFormatTargeting(targeting).build(); }
public static ApkTargeting apkAbiTargeting(AbiTargeting abiTargeting) { return ApkTargeting.newBuilder().setAbiTargeting(abiTargeting).build(); }
@Test public void mergeShardTargetings_firstAbiSecondDensity_ok() throws Exception { ApkTargeting targeting1 = apkAbiTargeting(AbiAlias.X86); ApkTargeting targeting2 = apkDensityTargeting(DensityAlias.HDPI); ApkTargeting merged = MergingUtils.mergeShardTargetings(targeting1, targeting2); assertThat(merged) .isEqualTo( ApkTargeting.newBuilder() .setAbiTargeting(abiTargeting(AbiAlias.X86)) .setScreenDensityTargeting(screenDensityTargeting(DensityAlias.HDPI)) .build()); }
public static ApkTargeting apkSdkTargeting(SdkVersion sdkVersion) { return ApkTargeting.newBuilder() .setSdkVersionTargeting(SdkVersionTargeting.newBuilder().addValue(sdkVersion)) .build(); }
private static void checkHasOnlyAbiAndDensityTargeting(ApkTargeting targeting) { ApkTargeting targetingWithoutAbiAndDensity = targeting.toBuilder().clearAbiTargeting().clearScreenDensityTargeting().build(); if (!targetingWithoutAbiAndDensity.equals(ApkTargeting.getDefaultInstance())) { throw CommandExecutionException.builder() .withMessage("Expecting only ABI and screen density targeting, got '%s'.", targeting) .build(); } }
@Test public void apkMultiAbiTargeting_byAbiAliasAndAlternativesSet() { ApkTargeting expectedTargeting = ApkTargeting.newBuilder().setMultiAbiTargeting(SINGLE_ABI_WITH_ALTERNATIVES).build(); assertThat( TargetingUtils.apkMultiAbiTargeting( AbiAlias.X86, ImmutableSet.of(ARMEABI_V7A, ARM64_V8A))) .ignoringRepeatedFieldOrder() .isEqualTo(expectedTargeting); }
@Test public void apkMultiAbiTargeting_byAbiAlias() { ApkTargeting expectedTargeting = ApkTargeting.newBuilder().setMultiAbiTargeting(SINGLE_ABI_NO_ALTERNATIVES).build(); assertThat(TargetingUtils.apkMultiAbiTargeting(X86)).isEqualTo(expectedTargeting); }
public static ApkTargeting apkTextureTargeting( TextureCompressionFormatTargeting textureCompressionFormatTargeting) { return ApkTargeting.newBuilder() .setTextureCompressionFormatTargeting(textureCompressionFormatTargeting) .build(); }
@Test public void apkMultiAbiTargeting_byMultiAbiTargeting() { ApkTargeting expectedTargeting = ApkTargeting.newBuilder().setMultiAbiTargeting(MULTI_ABI_WITH_ALTERNATIVES).build(); assertThat(TargetingUtils.apkMultiAbiTargeting(MULTI_ABI_WITH_ALTERNATIVES)) .ignoringRepeatedFieldOrder() .isEqualTo(expectedTargeting); }