Remove Duplicates

If the same file appears twice, Emerge flags it as a duplicate. In most cases you can delete the duplicate copies of the file to save size. In addition to duplicate files, resources in asset catalogs can also be flagged as duplicates.

iOS

Duplicates in frameworks

In some cases you may need to use a resource from your main app and an embedded plugin, such as a Siri extension. If you have one copy of your files in the main app bundle and a second copy in a framework (used by the Siri extension), you can delete the copy in the main app and only reference the framework. Here’s an example of a typical file structure that will be flagged as duplicates:

- MyAwesomeApp.app
  - Assets.car
    - myImage.jpg
  - MyFramework.framework
    - Assets.car
        - myImage.jpg

In this case, you can delete the myImage.jpg from the root level Assets.car.

🚧

Update references to new bundles

If you remove a resource from the main bundle, make sure you update any code referencing this resource to load it from the framework’s bundle.

You can update code to load an image from a new bundle like this:

// Before: Loading from the main bundle:
let image = UIImage(named: "myImage")

// After: Loading from the framework bundle:
let image = UIImage(
  named: "myImage",
  in: Bundle(for TypeInFramework.self),
  compatibleWith: nil)

Duplicate localizations

If you see localized strings files being marked as duplicates you may be able to delete one. For example if you have:

- fr.lproj
  - Localizable.strings
  - InfoPlist.strings
- fr-CA.lproj
  - Localizable.strings
  - InfoPlist.strings
- en.lproj
  - Localizable.strings
  - InfoPlist.strings

And Localizable.strings in fr-CA is identical to the file in fr, you can delete the fr-CA variant and iOS will fallback to the closest matching version, in this case fr.

Android

Emerge suggests duplicate resource and asset candidates if the potential savings of removing one duplicate is over 0.5 kb.

Emerge detects if a file is a duplicate by checking a hash of the file contents. The file savings shown on each insight is the potential savings of removing all of the duplicated resource/asset files, keeping one remaining.

626

An example of a duplicated asset, with the path to the duplicate visible if expanded.

Emerge also shows duplicate files directly in the size treemap by coloring the respective file red, with the path and filename of the duplicate present in the tooltip when hovering over the file's node.

528

Emerge shows duplicate files as red in the treemap, with the path to the duplicate visible upon hovering the node.