in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/binaryfiles/LargeFilesSuggester.java [67:107]
private ImmutableList<Suggestion> processFileEntry(
Context context, FileData fileData, boolean isAssetFile) {
if (context.getOnDemand() || fileData.getSize() < SMALL_FILE_SIZE_LIMIT) {
return ImmutableList.of();
}
// Here, we make the assumption that media formats don't get much smaller when the file is
// zipped, so we use the uncompressed file size.
final boolean isMediaFile = MEDIA_FILE_TYPES.contains(getFileExtension(fileData));
final long size =
(isMediaFile && fileData instanceof ZipFileData)
? ((ZipFileData) fileData).getCompressedSize()
: fileData.getSize();
ImmutableList.Builder<Suggestion> suggestions = ImmutableList.<Suggestion>builder();
if (isAssetFile || isMediaFile) {
suggestions.add(
Suggestion.create(
Suggestion.IssueType.LARGE_FILES_DYNAMIC_FEATURE,
Suggestion.Category.LARGE_FILES,
Payload.getDefaultInstance(),
"Place large file "
+ fileData.getPathWithinRoot()
+ " inside an on demand dynamic-feature to avoid bundling in apk",
size,
/* autoFix= */ null));
}
if (isMediaFile) {
suggestions.add(
Suggestion.create(
Suggestion.IssueType.MEDIA_STREAMING,
Suggestion.Category.LARGE_FILES,
Payload.getDefaultInstance(),
"Stream media file "
+ fileData.getPathWithinRoot()
+ " from the internet to avoid bundling in apk",
size,
/* autoFix= */ null));
}
return suggestions.build();
}