Generating .ipa for a modular iOS project

This article is written in context with Xcode 11.3.1

I was working on a project which involved multiple modules to be added as framework and I had to generate .ipa for the integrated app. I spent quite some time fiddling around with the different Xcode settings and finally I figured out the golden combination!

Steps to follow:
1. For the individual projects, for which you want to use the frameworks into your integrated app:
i. Click on the project
ii. Go to TARGETS -> Build Settings
iii. Search for Installation Directory and replace the existing /Library/Frameworks with @executable_path/../Frameworks/ no need to touch ‘@rpath’

iv. Build the project for Generic iOS Device

2. For the integrated iOS project:
i. Click on the project
ii. Go to TARGETS -> Build Settings
iii. Search for Enable Bitcode and set it to NO (in most of the cases you don’t need it and your frameworks were probably built without full bitcode)
iv. Now go to TARGETS -> General
v. Scroll down to ‘Frameworks, Libraries, and Embedded Content’ and make sure all of your module’s frameworks are there and for the Embed field set to Embed & Sign

Note: If you have other external frameworks like GoogleMaps.framework you don’t need to embed them into your project.

Also, before building the projects make sure that they are signed. Go to TARGETS -> Signing & Capabilities and tick ‘Automatically manage signing’

Now, just go to Product -> Archive and once archived, distribute your app in your preferred mode!

That’s all folks!

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store