Skip to main content

Extract sub-libraries from a given iOS/Swift library without access to source code to avoid namespace clashes using lipo and ar command

We at WeltN24 were facing the problem that two libraries that we integrated in our iOS project, used the same sub-library which resulted in naming conflicts due to the non-existing namespaces in Swift.

If you know what you are doing you can try to solve this conflict by extracting the shared sub-library from one of the libraries you want to integrate. You can even do this if you don't have access to the source code using the lipo (create or operate on universal files) and ar (create and maintain library archives) commands.

Why you should know what you are doing?
Manipulating unknown archives can result in unforseen effects because of the fact that you don't know anything about how the provider of the archive uses the sub-library, which version of the library was used or if the source code of the library was manipulated. So...
You should know what you are doing manipulting archives :)

The script is processing the files in following order:

  1. Extracting architecture slices of multi-architecture file $src_lib
  2. Excluding library archives which match regular expression $reg_exp_remove
  3. Writing new multi-architecture file $dst_lib

Usage example:
$ ./strip-lib.sh sourceLib.a targetLib.a "MyRegularExpression"

strip-lib.sh on Gist

Comments

Most Favorite Posts

Judo App - Server Driven UI out of the box

Judo App Judo brings server-driven UI to your iOS and Android apps. Build user interfaces visually in a fraction of time and publish them instantly without submitting to the app store. Build Experiences - With No Code The Judo app for macOS, available through the App Store, is built for design professionals with common keyboard shortcuts and familiar concepts like canvas, layers and inspector panel. Workflow is streamlined with the ability to drag and drop media files directly into your experiences and manage your own Judo files in Finder. Manage Creative Execution A Judo experience is interactive and can include text, images, video and buttons. An experience may be part of a screen, a single screen, or more typically multiple linked screens. Judo supports screen transitions, carousels, horizontal scrolling and modals. Clients can add custom fonts and define global colors and these are updates applied universally. Effortlessly Deploy Judo Cloud syncs your experiences with your iOS and ...

Flip4Mac

Flip4Mac WMV Components allow you to import, export and play Windows Media video and audio files on your Mac. Flip4Mac WMV export components can be used with QuickTime Pro, Final Cut Pro, Compressor, and iMovie 06 (iMovie '08 and '09 not supported). Flip4Mac
LazyPages is a highly customizable library that helps you to show a scrollable list of view controllers synchronized with an index. It is written in Swift 2.2 for iOS 8+. Like Scrollable Tabs in Android. GitHub

TestFlight

iOS beta testing on the fly Free over-the-air beta distribution TestFlight