Hey Leandro, that’s a great story. Good job in simplifying things with steps and videos. I am planning to implement this approach in my current project. However, I was planing to have separate Xcode workspaces for each module so that each module can have a separate repository in order to have more flexibility with version control. In that case, how would you add the dependencies (module/framework) to the main app?
The main reason for doing something like that, would be to diminish the amount of conflicts you get with your versioning system, right ?
I think that if you have a single workspace and multiple projects (like I propose), the kind of conflicts in git would be the same as if you had multiple workspaces. The conflicts would be on a per .xcodeproj file basis. So, two devs working on the same module would potentially have to resolve conflicts on the project file of that module.
An alternative option could be to create your own Cococapods and have them as separate workspaces and projects. I actually worked like that, but ended up with more complications than benefits, since each time we needed to make changes we had to open another workspace, increase the pod version, install the pod, etc.
Another option could be to have different workspaces and projects compiling and sending the framework build outputs into a single directory. Then the app could consume the frameworks from that directory. You might need some scripting going on and perhaps a custom build system.
I found that for a small team, 3 devs, the conflicts using the approach that I proposed were very manageable. Also, I really like the fact that you can see all the sub projects in the same workspace.
I hope this helps answering your question,
Thanks for reading!