Removes unnecessary parts from xcframeworks

xctrim

A cli program written in swift (with async/await) that removes the unnecessary parts of xcframeworks.

Usecase

Say you downloaded firebase sdk and added it to your project. It is a huge sdk that has many xcframeworks. And every xcframework has ios, ios simulator, tvos, tvos simulator, mac and catalyst slices. Usually your project doesn’t need all these slices. For example if your app is only ios app then you just need ios and ios simulator slices. With xctrim you can keep only necessary parts and reduce the space.

Installation

Clone the repo and run swift build -c release command. You will find xctrim executable in .build/release directory

Usage

xctrim --path directory/that/contains/xcframeworks --platform "ios arm64" --platform "iossimulator arm64 x86_64"
This command will keep only ios version with arm64 slice and ios simulator version with arm64(apple silicon) and 64 bit intel slices and remove every other version and slice from xcframeworks. If you omit the path parameter it finds xcframeworks in current path.

Available platforms and slices

Platform Slices
ios arm64, armv7
iossimulator arm64, i386, x86_64
ioscatalyst arm64, x86_64
tvos arm64
tvossimulator arm64, x86_64
macos arm64, i386, x86_64

GitHub

View Github