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.
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
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)
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
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
Updated 10 months ago