.getApkTargeting() .toBuilder() .setAbiTargeting( AbiTargeting.newBuilder() .addValue(targeting.getAbi())
@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()); }
/** * Merges two targetings into targeting of an APK shard. * * <p>Expects that the input targetings have only ABI and/or screen density targeting. * * <p>If both targetings target a common dimension, then the targeted universe in that dimension * must be the same. */ public static ApkTargeting mergeShardTargetings( ApkTargeting targeting1, ApkTargeting targeting2) { checkHasOnlyAbiAndDensityTargeting(targeting1); checkHasOnlyAbiAndDensityTargeting(targeting2); ApkTargeting.Builder merged = ApkTargeting.newBuilder(); if (targeting1.hasAbiTargeting() || targeting2.hasAbiTargeting()) { merged.setAbiTargeting(mergeAbiTargetingsOf(targeting1, targeting2)); } if (targeting1.hasScreenDensityTargeting() || targeting2.hasScreenDensityTargeting()) { merged.setScreenDensityTargeting(mergeDensityTargetingsOf(targeting1, targeting2)); } return merged.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()); }