How can you manually set the build number for iOS build?

We used to have to manually increment build numbers because the Mac editor didn’t do it for us automatically. We did it by manually changing the number in the info.plist file, which then copied over to the build.

With 4.7, it appears to auto-increment, but somehow the numbering system is different now. It jumped from build #145 to build 0.6 (which is wreaking havoc with our HockeyApp distribution). I’d like to reset it to the old integer-based build number, but can’t see where I can set the value or the increment amount.

1 Like

I agree. Whatever automatic versioning is going on must be overridable by automation.

I need to know how to get this to work also. A previous build was uploaded to the app store in an older version of UE4. But now the system has changed and I cannot upload a new build via Application Loader as the new build system gives a number which is lower than the previous submissions build number.

So I literally cannot submit a new build for my game in order to get it on the app store…

(oops originally posted this an an answer and not a comment)

I don’t know what the official answer is, but I found something that works. In DefaultEngine.ini You can add a key called AdditionalPlistData and provide plist-compatible XML. For example, to set our build number, we do this:


It’s not elegant, as we have to manually increment it, but it does work. It uses this CFBundleVersion in the final ipa rather than wherever it normally would pull it from. The same should work with the CFBundleShortVersionString value you need to increment for the App Store.

1 Like

Cheers. However, that’s assuming whatever parses the plist file later will only use the last value, as this would only append the ini-file value after the regular one. I’ll have to dig up the plist documentation to see what it says about duplicate entries.

However, that’s assuming whatever parses the plist file later will only use
the last value, as this would only append the ini-file value after the regular

That’s not true, actually. The build system does not just append the value. It parses the plist and the additional plist data, then adds the values from the latter to the former.

PList dictionary keys must be unique, so the additional values overwrites the existing value. I confirmed this before making the original reply by taking apart my .ipa file. In the Info.plist in my application bundle, there is only one CFBundleVersion key, and it contains the value from the AdditionalPlistData entry.

That would be something Xcode is doing then? As far as I can tell, UEDeployIOS.cs just appends all the lines to the file without checking. Anyway, if you say it works, I’ll go ahead and try it out. :slight_smile:

That’s interesting. I was going to look to see exactly how it handled the additional plist data, but got lazy once I knew it worked.

There must be something happening in one of the Apple developer tools that consolidates the plist so it only has one entry, but however it does it, the values in additional plist data always gets used. We’ve been using this to increment the build numbers on our Hockey builds for a couple weeks now and haven’t had a single problem. The generated .ipa does not have duplicate keys and it always has the right key.

It’s possible this could stop working at any moment, but so far, I haven’t found any officially supported way to increment the build number on iOS, and Unreal doesn’t autoincrement it like it does for Windows builds, so it’s Hobson’s choice. Having 200 build #20s sitting in Hockeyapp just with different upload dates (our situation before discovering this) gets a little confusing, and once we start shipping to the app stores, we’ll have to be able to increase version number.

I’m a little surprised Epic hasn’t given a better option yet or an official answer to this, frankly. They’re usually much more responsive than this when it concern things that will prevent a lot of devs from shipping their apps.

Hi ,

Are you looking for something like this?

heh… so… funny thing, I’ve been using agvtool for a long, long time. Hell, I’ve written books on Mac and iPhone development. But, we don’t check our Xcode projects in to source control, and Unreal doesn’t seem to copy back changes we make to the info.plist or other non-source project files anyway, so no, this is really not what I’m looking for. I’m looking for a way to increment the build number from within Unreal, either in a config file or in the Editor. When building for some platforms, it will auto-increment the build number, but when packaging iOS from the Unreal Editor, it does not do it, and I can’t find any place to manually set those values other than the additional plist data field (which feels like a hack).

AdditionalPlistData did do the trick wonderfully. Thanks . HockeyApp is happy again.

sorry it’s not helpful. Good luck in your search.

Sorry, didn’t mean to be a mean about it. You caught me on a bad morning. :frowning:

The automatic build number/counter for IOS is stored here:

[project folder]/Build/IOS/[project name].PackageVersionCounter

You can set the “last build number” by modifying the value contained in that file.

Not sure the first version this came in, but under Project Settings->iOS->Bundle Information, there is Version Info - the value here is used for CFBundleShortVersionString. Definitely present in 4.17+



1 Like