

Automatic Build Numbers in Xcode - sprint84
http://nerds.weddingpartyapp.com/tech/2014/07/10/automatic-build-numbers-in-xcode/

======
btn
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.

[https://developer.apple.com/library/mac/documentation/Darwin...](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/agvtool.1.html)

[https://developer.apple.com/library/ios/qa/qa1827/_index.htm...](https://developer.apple.com/library/ios/qa/qa1827/_index.html)

~~~
sprint84
That's great, I also didn't know it existed. The only thing I need to check is
if it will copy the updated values to the archived ipa.

------
SurfScore
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.

~~~
sprint84
In the post, there is a workaround for the increment at each build/run. You
just need to be sure to run the script only in Release

~~~
SurfScore
Well I'd like to know build numbers internally, just only when I change
things. So if I put build 12500 on 3 iPads, I can track the crashes.

~~~
sprint84
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.

~~~
SurfScore
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.

~~~
sprint84
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.

------
luketheobscure
Should be titled "How to create conflicts with every commit".

~~~
sprint84
The script runs only when you Archive.

~~~
luketheobscure
Which happens when you run Instruments.

I had a project with this exact setup about a year ago... The amount of time
lost resolving conflicts wasn't worth it.

