2014-01-08 26 views
1

相比,根據公認的答案在這裏的子彈3點: CFBundleVersion in the Info.plist Upload Error難道糾正不同版本已提交應用的使用CFBundleVersion

蘋果應該是比較「CFBundleVersion」(即「捆綁 版本」,而不是 「捆綁版本字符串,短」)

然而,在此公告: Difference between Xcode version (CFBundleShortVersionString) and build (CFBundleVersion)

它說版本映射到CFBundleShortVersionString和建立地圖到CFBundleVersion

因此,這意味着當您將新版本的應用程序提交給應用程序商店時,正在對構建進行比較,而不是您在XCode摘要頁面中看到的版本。

這輪似乎走錯了路,我 - 尤其是考慮從Apple文檔報價:

CFBundleShortVersionString代表一個發佈版本,而 CFBundleVersion代表任何構建,發佈與否。

這意味着當提交應用程序的新版本時,您需要關注內部版本號,而不是版本號,這對我來說似乎很奇怪。它更奇怪,因爲根據這個: What's the difference between "version number" in itunes connect, "bundle version", "bundle version string" in xcode?

CFBundleShortVersionString必須與iTunesConnect中相同。那爲什麼Apple會檢查CFBundleVersion而不是CFBundleVersionShortVersionString?

我已經提交了一個應用程序,其中版本和內部版本都是1.0,現在我想提交一個新版本並且碰到1.0.1,這會在提交時引發任何問題嗎?

回答

1

來自用戶的報告似乎不一致。另外,SO答案已超過2年。

有關「配置您的應用」在蘋果的App Distribution Guide本節這樣說:

設置的版本號和生成String

版本號是積極的一個兩期分隔的列表整數,如4.5.2所示。第一個 整數表示主版本,第二版是次要版本,第三版是維護版本。版本號顯示在 商店中,該版本應該與您在iTunes Connect中輸入的後續版本號 相匹配。有關可能值的詳細信息,請參閱 「信息屬性列表項」中的「CFBundleShortVersionString」 參考。

構建字符串表示 包的迭代(已發佈或未發佈),並且可以包含字符和數字的混合,如 12E123。對於Mac應用程序,用戶可以單擊 「關於」窗口中的版本號在版本號和版本 字符串之間切換。有關可能值的詳細信息,請參閱 信息屬性列表項引用中的「CFBundleVersion」。

對於iOS應用程序,每當您分發應用程序的新版本 以進行測試時,請更新構建字符串。 iTunes會識別出版本號 字符串已更改,並將新iOS App Store套件正確同步到 設備。對於如何配置你的應用程序進行測試,請閱讀「Beta測試 您的iOS應用。」

這表明,在App Store重要的是CFBundleShortVersionString,它應該與iTunes中的值連接起來。在對用於測試的版本進行區分時,會考慮對CFBundleVersion所做的更改。

然而,這在某種程度上違背了什麼 「Information Property List Key Reference」 說,大約CFBundleVersion

CFBundleVersion(字符串 - 的iOS,OS X)指定構建版本 號捆綁的,標識的迭代(釋放或 未發行)的捆綁。構建版本號應該是一個字符串 ,由三個非負的,句點分隔的整數組成,其中 的第一個整數大於零。該字符串應只包含 數字(0-9)和句點(。)字符。前導零從每個整數中截取 ,並且將被忽略(也就是說,1.02.3等於 到1.2.3)。該密鑰不可本地化。

這不是蘋果公司第一次或最後一次與文檔相矛盾的信息。

就我個人而言,我會使用應用分發指南的指導方針,但設置兩個值相同的版本號似乎符合兩個文檔,所以你應該沒問題。

對於我的Mac OSX應用程序,我在CFBundleVersion中使用CFBundleShortVersionString中的虛線版本和正在運行的整數(對應於我的SCM修訂版號)。多年來一直提交這樣的更新並從未遇到過問題

相關問題