I need to override an ad-hoc distribution file on a testers device. I'm confused with the apps version number and the build number. what number do I need to change to make sure that the new version will override the existing one?
Bundle versions string, short or the Bundle Version?
Thanks
CFBundleVersion (Bundle version) should be the Info.plist key and the bundle version string should be the Value that specifies the build version number of the bundle. This value is a monotonically increased string, comprised of one or more period-separated integers. This value cannot be localized.
NSString *versionNum = [NSBundle mainBundle].infoDictionary[#"CFBundleVersion"]; // X.Y.Z format.
NSString *versionNum = [NSBundle mainBundle].infoDictionary[#"CFBundleShortVersionString"] // X.Y format.
Apple uses the Version Number when you upload your app to the App Store. The information in iTunes Connect and your info.plist need to be the same.
The build number is a separate entity (as far as I know) that you can increase with every build or otherwise.
For your updated app, you can always add .1 to the version string.
Related
As iTunesConnect has introduced the new feature to expire the build which eventually remove the build from iTunesConnect. After doing that i wanted to upload the new build with same App version and Build version but getting below error
ERROR ITMS-4238: "Redundant Binary Upload. There already exists a binary upload with build version '1.2.8' for train '1.2.0'" at SoftwareAssets/PreReleaseSoftwareAsset
Is it possible with new iTunesConnect?
This is not possible. Suppose you already have version number 1.0 in App Store then new version must be greater than 1.0.
Refer following link for more details: https://developer.apple.com/library/content/technotes/tn2420/_index.html
Version number and build number checklist
Here are some things you can check when submitting a new build to the App Store. Making sure you have your version number and build number set properly will help you by avoiding having your app automatically rejected for having them improperly configured.
For each new version of your app, you need to invent a new version number. This number should be a greater value than the last Version Number that you used. Though you may provide many builds for any particular release of your App, you only need to use one new Version Number for each new release of your App.
You cannot re-use version numbers.
You cannot re-use version numbers.
For every new build you submit, you will need to invent a new build number whose value is greater than the last build number you used (for that same version). For iOS apps, you may re-use build numbers when submitting different versions. For macOS apps, you must chose a new build number for every submission that is unique and has never been used before in any submission you have provided to the App Store (including build numbers used in previous versions of your app).
For iOS apps you can re-use build numbers in different release trains, but you cannot re-use build numbers within the same release train. For macOS apps, you cannot re-use build numbers in any release train.
In iOS, what's the difference between:
Bundle versions string, short AND Bundle version?
What to update when building a new release and when ?
Bundle version is the internal version number of your app.
Short version string is the publically visible version of your app.
So for example, if you iterate your version number every time you do an internal build for your beta testers (or whatever), your bundle version might be 2.0.0.12345b7, but you don't want the public to see that, so you set your short version string to 2.0.
Short version string seems to be optional, so if you leave it blank then the bundle version is what people will see (i.e. that's what will be displayed on the App Store).
If you don't have a short version string, then the same rules apply to your bundle ID (basically the public app version has this restriction and the private app version doesn't).
There's a more detailed answer here:
What's the difference between "version number" in itunes connect, "bundle version", "bundle version string" in xcode?
http://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html
From docs..
Bundle version is the one that must be in the info .plist and that's the one you should update every new version..Bundle versions string, short is not must but is given although i didn't understood its use..
Let's say I have an existing IOS app live on Appstore which is version 1.0
Now I make some changes to the app and want to submit back.
Are there 2 separate ways to submit ?
Like can I still keep the version as 1.0 and just submit the app OR
I need to create a new version 1.1 and then submit it ?
What are the differences in the process?
Also from the customer end, how does this work for new/existing users ?
I have just discovered something about version upgrades and the App Store. Just now, I'm suffering issues and users crashes because of a behavior of iOS system that I can't figure before. And, very important, iTunes, AppStore and iOS have modified some upgrading and installing rules in last versions. Now, it works this way:
- When user install a new version, all the files in the bundle are downloaded and copied in the previous existing bundle, but OLD FILES OR COMPONENTS ARE NOT DELETED (or not all are deleted). So, the final bundle IS NOT equal to the bundle of a fresh installation of the new version.
- For example, if a xib/nib file is localized to different languages for the new version, the updated bundle will include both versions: the one in the root folder and the other one in each localized folder. The system, obviously, will use the first one and only a fresh installation will show localizations for that file.
One of my apps shows that issue with MainWindow.xib and as there are some modifications in references and classes, the updated apps crash each time you try to run as it is using a obsolet object. I have built a new version changing the name of the xib/nib files that have been localized. As MainWindow is one of them, I have to modify the reference in info.plist of course.
OK, knowing that, you can build a new version with complete different components in the bundle that, if files of previous version does exist, the app then offers the user the option of using them. That is, two versions of the app in a single icon and bundle. Not very difficult to do.
BUT, the very weird thing is that I think that new iOS version and iTunes don't allow downgrades. I have tried to do it but didn't get it done. That is, if you install a version, for example 1.2, it is impossible AFAIK to install latter v1.1 on the device nor in iTunes->"Applications". So, the double version bundle will live until a reinstallation of the app.
You need to create a new version number, which makes sense since this is a new version of your app. This will then appear as an update for your customers. I don't think you can upload a new binary with the same version without removing the old one from the store.
You add a new version in iTunes connect, then update the version number in Xcode to match and create a new archive. It's pretty straightforward.
You must always increase the version number of any update to your app.
Users will see a badge on the App Store icon on the device, and in iTunes on their PC. Going into the updates section, it will list your app along with the list of changes you've provided, and a button to install the update. They can also update all apps at once.
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:#"CFBundleVersion"];
NSLog(#"version is%#",version);
You do not have to open version numbers to submit any longer. Open up Xcode, go to Window - Organizer - Archives and Distribute an app you have created successfully.
Perviously the client uploaded same app on iTunes connect and rejected for some reason.
After some modifications I need to upload the binary again.
The previous binary details are,
Now, here are the current info.plist details,
I am using Xcode 4.0
When I tried to validate product from Xcode I got this error,
I tried different different CFBundleVersion in the Info.plist. but still error occurs.
I cleaned project, deleted build, also re-installed Xcode and retried but no use.
Please help me.
So it looks like this needs to be an ever-increasing version number and can't reset when the marketing version number changes. It seems like you could use your VCS revision number here; in my app I display the marketing version number and if the user "clicks" on it it adds the build number (CFBundleVersion) on the end. The primary purpose of this is to keep the version number clean and simple, but also allow QA and beta testers to determine the exact version of the product they're testing. The Subversion revision number would certainly help us track down the build being used, but in this case that'll be a strange version number jump for me (6 -> ~74000).
basically i had to change 1.1f to 1.11 in both itunes connect and in xcode. the f had to be removed from the version number. no alphas allowed !
Reference: Can't Update App with New Version Number
i have been trying to uplaod an application to apple store for 2 days now..first they said the provisioning profile was not right due to which i had to make a new one and upload it again now after that problem was solved while uploading the new binary it said the version was same with the previous minor version(1.0 - which someone else uploaded in my company)..then i changed the version to 1.1 by changing it in target > info > properties..then i cleaned all targets quite the xcode,restarted the xcode and build the project again..it succeeded and now wen i uploaded it it still says the same error
version same with the previous minor version
is there any other way of changing the version number though in my info.plist file it is showing version:1.1??
i am all new to iphone and the person who created the application is not here and i dont have any CFbundleversion in my info.plist which some people suggested me to update??
Alternately you can change CFBundleShortVersion string in app-info.plist file and increment it. I have faced the same problem earlier. This property is not present by default and needs to be added.
Bundle versions string, short is the parameter name
Change your version from 1.1 to 1.1.1 or 1.2 For each new binary, your version number should increase. How to increase version numbers will depends on your versioning system.