private ImmutableSet<VariantTargeting> generateVariants() { ImmutableSet.Builder<VariantTargeting> builder = ImmutableSet.builder(); for (BundleModule module : modules) { VariantGenerator variantGenerator = new VariantGenerator(module, apkGenerationConfiguration); ImmutableSet<VariantTargeting> splitApks = variantGenerator.generateVariants(); builder.addAll(splitApks); } return generateAllVariantTargetings(builder.build()); }
@Test public void variantsWithNativeLibsDexFiles_allOptimizationsDisabled() throws Exception { VariantGenerator variantGenerator = new VariantGenerator(createSingleLibraryDexModule()); ImmutableCollection<VariantTargeting> splits = variantGenerator.generateVariants(); assertThat(splits).containsExactly(lPlusVariantTargeting()); }
@Test public void targetsPreLOnlyInManifest_throws() throws Exception { int preL = 20; BundleModule bundleModule = new BundleModuleBuilder("testModule") .setManifest(androidManifest("com.test.app", withMaxSdkVersion(preL))) .build(); CommandExecutionException exception = assertThrows( CommandExecutionException.class, () -> new VariantGenerator(bundleModule).generateVariants()); assertThat(exception) .hasMessageThat() .contains("does not target devices on Android L or above"); }
@Test public void variantsWithNativeLibsDexFiles_withInstantModule_allOptimizationsDisabled() throws Exception { VariantGenerator variantGenerator = new VariantGenerator( createSingleLibraryDexModule(), ApkGenerationConfiguration.builder().setForInstantAppVariants(true).build()); ImmutableCollection<VariantTargeting> splits = variantGenerator.generateVariants(); assertThat(splits).containsExactly(lPlusVariantTargeting()); }
@Test public void variantsWithNativeLibsDexFiles_withNativeLibsOptimization() throws Exception { VariantGenerator variantGenerator = new VariantGenerator( createSingleLibraryDexModule(), ApkGenerationConfiguration.builder() .setEnableNativeLibraryCompressionSplitter(true) .build()); ImmutableCollection<VariantTargeting> splits = variantGenerator.generateVariants(); assertThat(splits) .containsExactly(lPlusVariantTargeting(), variantMinSdkTargeting(ANDROID_M_API_VERSION)); }
@Test public void variantsWithNativeLibsDexFiles_withDexOptimization() throws Exception { VariantGenerator variantGenerator = new VariantGenerator( createSingleLibraryDexModule(), ApkGenerationConfiguration.builder().setEnableDexCompressionSplitter(true).build()); ImmutableCollection<VariantTargeting> splits = variantGenerator.generateVariants(); assertThat(splits) .containsExactly(lPlusVariantTargeting(), variantMinSdkTargeting(ANDROID_P_API_VERSION)); }
@Test public void variantsWithNativeLibsDexFiles_withInstantModule_withNativeLibsAndDexOptimization() throws Exception { VariantGenerator variantGenerator = new VariantGenerator( createSingleLibraryDexModule(), ApkGenerationConfiguration.builder() .setForInstantAppVariants(true) .setEnableDexCompressionSplitter(true) .setEnableNativeLibraryCompressionSplitter(true) .build()); ImmutableCollection<VariantTargeting> splits = variantGenerator.generateVariants(); assertThat(splits).containsExactly(lPlusVariantTargeting()); }
@Test public void variantsWithNativeLibsDexFiles_withNativeLibsAndDexOptimization() throws Exception { VariantGenerator variantGenerator = new VariantGenerator( createSingleLibraryDexModule(), ApkGenerationConfiguration.builder() .setEnableDexCompressionSplitter(true) .setEnableNativeLibraryCompressionSplitter(true) .build()); ImmutableCollection<VariantTargeting> splits = variantGenerator.generateVariants(); assertThat(splits) .containsExactly( lPlusVariantTargeting(), variantMinSdkTargeting(ANDROID_M_API_VERSION), variantMinSdkTargeting(ANDROID_P_API_VERSION)); }