Creating multiple projects in one Xcode project

Hi friends, in this blog we will discuss about how multiple projects are handled in iOS.

🎯 Challenges which we face with single project.

  • Consider a situation that you have one application that will be published in various countries with some different features but also it have some same features. Instead of keeping duplicate work, you can work similar feature as framework and you can use it in your app.
  • One more use case is :- If you’re working in a big team / your app is very big, it’s better to keep separate project for each work. It helps for CI/CD integration to alert particular team about issues. I’m explain more about this in my next blog.

first we will look what you mean by workspace and xcodeproj

  • An Xcode workspace always exists in your project. It may be external to an .xcodeproj, or embedded within one.
  • A workspace is just a list of contained projects. there is no other metadata in it.
  • Xcode workspaces are directories with the .xcworkspace extension that is present as packages
  • Workspace is responsible for dependencies between projects
  • Each workspace contains bellow 3 files. The important file is contents.xcworkspacedata.
1. xcworkspace folder contains these project 2. Data in contents.xcworkspacedata with empty workspcae

*.xcodeproj:-

  • like workspace, an Xcode project is a bundle containing one or more files.
  • The most important and only required file is the project.pbxproj file.
  • Project is responsible for the source code.
  1. Create Simple xcode project as follows.
  • Create xcode project by Select File -> New -> project -> app -> give name for the project(e.g Test) -> select destination to save project
  • Now Your app folder look like this

2. To add framework follow bellow steps.

  • Open your xcode project where you need to add -> Select File -> New -> project -> Framework-> give name for the framework(e.g NextScreen) -> select your project where you need to add project under Add to
  • Now your project look like this which has one Test xcodeproject and a NextScreen framework

3. Create plugin file which acts as interface between the app and framework

  • Create swift file which acts as plugin between the framework and project :- Select File -> New -> Swift File -> name the file(e.g NextScreenPlugin) and save under framework folder.

iosNote: class and method used in plugin file which need to be accessed from different module should have open/public access specifier. To know about it click here

4. Add your framework as dependency to your app

  • Select your project -> Select Build Phase -> Click on + button under Dependencies. -> add your framework there(I’m using NextScreen as framework)
  • Expanded project folder looks like below

4. Create a view controller to test

  • In this Example i’ve a viewcontroller with button in Test app. Tapping on that button will take user to next screen which is present in my framework
  • Add code for pushing view controller in NextScreenPlugin as
  • Import framework into the app and call required method
  • Now run your code. your app look as bellow
  1. Create a folder where you want to store your project.
  2. Select File -> New -> Workspace.

3. Add name and store the workspace. It creates empty workspace for you. Now your app folder look like this

4. Select File -> New -> this time instead of selecting workspace select project -> select app -> give project name (e.g WorkSpaceTest)-> select workspace where you need to add project under Add to

5. Now your project is added to the workspace and you check the location of the project in contents.xcworkspacedata . Now your contents.xcworkspacedata and project folder look like this after adding.

6. follow same steps above for adding multiple projects into xcodeproject as explained above.

Enjoy your coding. I hope you learnt something from this blog. Please hit the clap button below 👏 to help others find it!. follow me on Medium.

iOS Developer in walmart

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