Opening Xcode project with two pods installed - xcode

I'm trying to add to my app both Moltin and Firebase pods. I know that if I want to open the file (with only one pod installed) I need to open it from the .xcworkspace file instead of using the .xcodeproj file.
Which file do I have to open if I have more than one pod installed (and so two .xcworkspace files)?

After you install your first pod, you should always use .xcworkspace.
It doesn't matter how many pods you have installed, after the first one, always use .xcworkspace.
In other words:
0 pods, use .xcodeproj
1+ pods, use .xcworkspace
There will only be one .xcworkspace.

You can install more than one pods in podFile , as Gustavo said , There will only be one Podfile in a project.Create it once and add pods into Podfile whatever you want like :
target 'AppName' do
frameworks
use_frameworks!
pod 'Firebase'
pod 'Moltin'
...

Xcode workspace is a directory (not a file) which has a .xcworkspace extension. Finder shows it as a package. It actually is an Xcode document that groups projects and other documents so can be worked together in your project.
A workspace can contain any number of Xcode projects, plus any other files you want to include.
When you open an XCWORKSPACE, it opens the associated project and restores the perspective. Therefore, Xcode workspace files can be used as a wrapper or container for an Xcode .XCODEPROJ project.
Xcode workspace directory includes a vital XML file named contents.xcworkspacedata, and it looks like:
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:MySampleProject.xcodeproj">
</FileRef>
<FileRef
location = "group:OtherProject(for example Pods).xcodeproj">
</FileRef>
</Workspace>
In this arbitrary tree, group: represents the directory of your project/s (as many you have).
Additionally .xcworkspace always exists it may be external to an .xcodeproj, or embedded within one. Therefore, whenever you see .xcworkspace you have to use it to open your project.

Related

Pod files are missing

I am new in iOS dev, but I need to build a certain project. The problem is that when I click on the build button xcode fails and one of the errors says
Unable to load content of list : path_to_pod_file
as well I see that in project structure xcode marked missing files with red color
I read about pod files and understood that it is a kind of configuration file, so the question is: are these files should be generated by build (somehow) or it is files that I hadn't received with a project and there is no way to generate them?
I found a solution here:
https://medium.com/#soufianerafik/how-to-add-pods-to-an-xcode-project-2994aa2abbf1#
Actually, the files I asked for above are generated and I needed to install the pod and run the Pod file which (in my case) was under my project structure.
sudo gem install cocoapods
cd PATH_TO_YOUR_PROJECT_FOLDER
pod init (IN CASE IF YOU HAVEN'T ALREADY HAVE IT)
pod install
Double click on the Xcode workspace to open the project
You can clean/re-build your project and run it.

Trouble after renaming Xcode project

I have followed this guide to change the name of my Xcode project. But after doing that, the .xcworkspace is empty. The .xcodeproj looks fine.
What can I have missed/forgot?
Do you use cocoapods in your project? If yes, you could simply delete your .xcworkspace file, Pod folder, Podfile.lock file and install pods again.

Multiple targets for project in xcode

I am using xcode 7.3.1. After pod update, it's showing multiple project target in the project having same details without any change. How can I fix this? If I delete any one of these, xcode crashes and when we reopen even the other option comes in red and we dont have any project.
Have you tried to delete the workspace file and the pod directory, and re-launch a pod install ? The workspace file does not hold any important information to be retained in CocoaPods.
If you have the same problem after regenerating, it means there is an error in the Pod file.

Can I delete the xcodeproj after pod install?

I know that I have to use the .xcworksapce file after I did pod install.
But today, I accidentally opened the .xcodeproj file and the whole project broke! And the problem described in this question occurred.
So I want to delete the .xcodeproj file so that I will never break my project by opening it by accident. Can I do that? I didn't try it because I'm afraid I will break my project again.
No, you can't. In fact the xcworkspace file use xcodeproj file of you project.
The purpose of the xcworkspace file is to make the merge between your project (and its xcodeproj) and the Cocoapods projects (and its Pods.xcodeproj).
EDIT:
If you want to move your xcodeproj to a subfolder (to avoid mistakes), you just have to update your podfile and add:
xcodeproj 'subfolder/yourproject.xcodeproj'
Then, delete your xcworkspace, and do a pod install.
Be careful: this works only if your Workspace contains just your project and the pods.

How do I configure my project for Cocoa Pods correctly?

In some of my past projects, Cocoa Pods wasn't configured correctly and it would lead to undesirable things such as needing duplicate Cocoa Pod projects in the Project Navigator, or pod files having to be checked in to version control.
How do I install Cocoa Pods correctly and verify that my Directory structure and Project Navigator structures are set up properly?
The best way to use Cocoa Pods is to follow the official example's lead.
This consists of several steps.
Setting up Cocoa Pods for the first time
1. Install Cocoa Pods on your computer
Begin with the Getting Started Guide to install Cocoa Pods on your computer.
2. Create a Podfile
Do not create the Podfile in Xcode, since it should not be part of your project!
Create the file in your favorite text editor, and save it at the same level as your .xcodeproj file.
An example of a Podfile's contents are:
pod 'CupertinoYankee', '~> 1.0'
3. Run pod install
Navigate to your Podfile's directory in terminal and run pod install.
4. Open the generated workspace
Once you run pod install, you will see a message such as:
[!] From now on use MyProject.xcworkspace.
Close the Xcode project, and open up the generated .xcworkspace file.
Understanding the Changes
It is always useful to know what changes were made to your project in case things go wrong.
1. Directory structure
You should have started with a structure such as:
... then manually added a Podfile:
After running pod install, your directory structure now looks like this:
Notice how the only new objects are:
MyProject.xcworkspace
Podfile.lock
Pods
2. Project Navigator
In Xcode, you started with this:
... and ended with this in the new workspace:
For reference, here is an expanded look at the new directory structure:
Obviously, the Pods project was added to the Project Navigator, but there are a few other key things to notice:
Notice how Podfile is located at the root of the MyProject folder in Finder, but is inside of the Pods project in Xcode's project navigator.
Likewise, notice how Pods.xcconfig is located inside the Pods folder in Finder, but is inside of the MyProject in Xcode's project navigator.
3. Configurations
These are the same screenshots as before:
In Xcode, you started with this:
... and ended with this in the new workspace:
Notice how under Configurations, the "MyProject" target now has Pods specified.
This is important because otherwise PODS_ROOT will not be set up properly (among other things), and when you build, you will get errors.
4. PODS_ROOT added
Your target's Build Settings went from this: (Note: this is scrolled all the way down)
... to this:
Notice how PODS_ROOT was added as a User-Defined setting.
Note: this part of the configuration sometimes gets bugged out when reinstalling Pods, so you may need to close and open the Xcode project to fix it.
5. Other changes
You can see a complete list of the changes here.
In my case: On my project SwiftLint was added on Build Phasees -> SwiftLint as below image My root Folder structure was Volume/Project Files/iOS Project Files/Office Projects/project-name. As you can see there were space on my Directory structure , SwiftLint executed on build phase create problem for those space and show a no directory found error. After changing the high level directory by renaming like the below image solved my problem

Resources