Build configurations are at the heart of Xcode's organizational apparatus. All of those hundreds of files that make up a project would be nothing without a clever set of files somewhere that know how to stitch it all together. But of course, we say building, rather than stitching. Stitch configurations sounded pretty good to me, but never caught on.
There are many changes that may be desirable according to the circumstances for which an app is being compiled. In this chapter, we're going to imagine the client has asked for two different versions of an app; one might be used to access a staging server to obtain dynamic data, while the other would use the client's actual production server (the one that nobody is going to want to perform experiments on because it's being used by a million users a day).
These two versions will need to reside side by side on a single machine, so they will also need different bundle IDs.
Build configurations allow us to make adjustments...