private SplittingPipeline createAssetsSplittingPipeline() { ImmutableList.Builder<ModuleSplitSplitter> assetsSplitters = ImmutableList.builder(); if (apkGenerationConfiguration .getOptimizationDimensions() .contains(OptimizationDimension.LANGUAGE)) { assetsSplitters.add(LanguageAssetsSplitter.create()); } return new SplittingPipeline(assetsSplitters.build()); } }
private SplittingPipeline createAssetsSplittingPipeline() { ImmutableList.Builder<ModuleSplitSplitter> assetsSplitters = ImmutableList.builder(); if (apkGenerationConfiguration .getOptimizationDimensions() .contains(OptimizationDimension.LANGUAGE)) { assetsSplitters.add(LanguageAssetsSplitter.create()); } return new SplittingPipeline(assetsSplitters.build()); }
private SplittingPipeline createNativeLibrariesSplittingPipeline( ImmutableSet<OptimizationDimension> shardingDimensions) { return new SplittingPipeline( shardingDimensions.contains(OptimizationDimension.ABI) ? ImmutableList.of(new AbiNativeLibrariesSplitter(generate64BitShards)) : ImmutableList.of()); }
private SplittingPipeline createDexSplittingPipeline() { ImmutableList.Builder<ModuleSplitSplitter> dexSplitters = ImmutableList.builder(); if (apkGenerationConfiguration.getEnableDexCompressionSplitter()) { dexSplitters.add(new DexCompressionSplitter()); } return new SplittingPipeline(dexSplitters.build()); }
private SplittingPipeline createApexImagesSplittingPipeline() { // We always split APEX image files by MultiAbi, regardless of OptimizationDimension. return new SplittingPipeline(ImmutableList.of(new AbiApexImagesSplitter())); }
private SplittingPipeline createResourcesSplittingPipeline( ImmutableSet<OptimizationDimension> shardingDimensions) { return new SplittingPipeline( shardingDimensions.contains(OptimizationDimension.SCREEN_DENSITY) ? ImmutableList.of( new ScreenDensityResourcesSplitter( bundleVersion, /* pinResourceToMaster= */ Predicates.alwaysFalse())) : ImmutableList.of()); }
private SplittingPipeline createResourcesSplittingPipeline() { ImmutableList.Builder<ModuleSplitSplitter> resourceSplitters = ImmutableList.builder(); if (apkGenerationConfiguration .getOptimizationDimensions() .contains(OptimizationDimension.SCREEN_DENSITY)) { resourceSplitters.add(new ScreenDensityResourcesSplitter(bundleVersion, pinResourceToMaster)); } if (apkGenerationConfiguration .getOptimizationDimensions() .contains(OptimizationDimension.LANGUAGE)) { resourceSplitters.add(new LanguageResourcesSplitter(pinResourceToMaster)); } return new SplittingPipeline(resourceSplitters.build()); }
private SplittingPipeline createNativeLibrariesSplittingPipeline() { ImmutableList.Builder<ModuleSplitSplitter> nativeSplitters = ImmutableList.builder(); if (apkGenerationConfiguration.getEnableNativeLibraryCompressionSplitter()) { nativeSplitters.add(new NativeLibrariesCompressionSplitter(apkGenerationConfiguration)); } if (apkGenerationConfiguration .getOptimizationDimensions() .contains(OptimizationDimension.ABI)) { nativeSplitters.add( new AbiNativeLibrariesSplitter(apkGenerationConfiguration.getInclude64BitLibs())); } return new SplittingPipeline(nativeSplitters.build()); }
@Test public void testAllSplittersCalled() { TrivialSplitter splitter = new TrivialSplitter(); TrivialSplitter splitter2 = new TrivialSplitter(); SplittingPipeline pipeline = new SplittingPipeline(ImmutableList.of(splitter, splitter2)); ImmutableCollection<ModuleSplit> splits = pipeline.split(baseSplit); assertThat(splitter.splitCallCount).isEqualTo(1); assertThat(splitter2.splitCallCount).isEqualTo(1); assertThat(splits).containsExactly(baseSplit); }
@Test public void testSplittersCalledInRightOrder() { DoublingSplitter splitter = new DoublingSplitter(); DoublingSplitter splitter2 = new DoublingSplitter(); SplittingPipeline pipeline = new SplittingPipeline(ImmutableList.of(splitter, splitter2)); ImmutableCollection<ModuleSplit> splits = pipeline.split(baseSplit); assertThat(splitter.splitCallCount).isEqualTo(1); assertThat(splitter2.splitCallCount).isEqualTo(2); assertThat(splits).hasSize(4); assertThat(splits).containsExactly(baseSplit, baseSplit, baseSplit, baseSplit); } }