private ImmutableList processFileEntry()

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();
  }