in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/analyzers/BundleAnalyzer.java [60:91]
public ImmutableList<Suggestion> analyze(File artifactFile) {
ImmutableList.Builder<Suggestion> resultBuilder = ImmutableList.<Suggestion>builder();
try (ZipFile zipFile = new ZipFile(artifactFile)) {
AppBundle appBundle = AppBundle.buildFromZip(zipFile);
ImmutableMap<BundleModuleName, BundleContext> contextPerModule =
appBundle.getModules().entrySet().stream()
.collect(
toImmutableMap(
entry -> entry.getKey(), entry -> createContext(entry.getValue())));
// Process suggesters operating on the entire bundle.
BundleContext baseContext = contextPerModule.get(BundleModuleName.BASE_MODULE_NAME);
bundleSuggesters.forEach(
suggester ->
resultBuilder.addAll(suggester.processBundle(baseContext, appBundle, zipFile)));
// Process suggesters operating on the individual bundle files.
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
BundleContext context = findContext(contextPerModule, entry);
for (BundleEntrySuggester suggester : bundleEntrySuggesters) {
ZipFileData zipFileData = new ZipFileData(zipFile, entry);
resultBuilder.addAll(suggester.processBundleZipEntry(context, zipFileData));
}
}
} catch (IOException e) {
throw new UncheckedIOException(e);
}
return resultBuilder.build();
}