It looks like this is a re-invention of agvtool(1)---which ships with Xcode, will synchronise updates across all versioned targets in a project, and has options for differentiating marketing vs. development numbers and generating source files.
I've been using a version of this for about a year now. I even modified the script to work with two build targets. The only problem is that every time you press the "play" build/run button it increments the build number, with or without any changes actually being made to the app.
It isn't a huge deal, but when I'm loading the app onto multiple iPads via Xcode, it would be nice to keep the same build number.
What do you mean? Do you want to read the build number on runtime? There is a way to do that, when you put them in the plist, just run [[NSBundle mainBundle] infoDictionary][@"CFBundleVersion"] to get the NSString.
Say I have 3 iPads in the office, and I want to load a build on each of them. I know I can use Testflight or similiar, but the easiest is to just plug them into my computer and press the play button. If I do that, it increments the build number, so iPad #1 gets build 4031, iPad #2 gets build 4032, etc.
No it doesn't, if you ensure it will run only on "Release".
When you deploy an app to a device via Xcode, unless you specify differently, it will compile in "Debug", so that won't cause an increment. Every iPad will have the same build.
https://developer.apple.com/library/mac/documentation/Darwin...
https://developer.apple.com/library/ios/qa/qa1827/_index.htm...