2012-03-17 3 views
26

Я отправляю обновление в одно из моих приложений. Я делал это десятки раз со многими различными приложениями, которые я разработал, но этот не работает по какой-то странной причине. Я архив мое приложение, а затем попытается проверить архив и получить следующее сообщение об ошибке:CFBundleVersion должен быть выше, чем предыдущая версия

This bundle is invalid. The key CFBundleVersion in the Info.plist file must 
contain a higher version than that of the previously uploaded version. 

iTunesConnect показывает, что это приложение является в настоящее время 1.0, и я настроен, чтобы быть готовы к загрузке версии 1.1 (скриншот с приложением иконки отредактированный):

iTunes Connect Screenshot

Вот скриншот моего приложения цели сводной информации, которая показывает версию и короткую версию оба «1,1»:

enter image description here

Вот верхняя половина Info.plist из Bundle архива:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>AppStoreFileSize</key> 
    <integer>20859080</integer> 
    <key>ApplicationProperties</key> 
    <dict> 
     <key>ApplicationPath</key> 
     <string>Applications/MyApp.app</string> 
     <key>CFBundleIdentifier</key> 
     <string>com.mydomain.myapp</string> 
     <key>CFBundleShortVersionString</key> 
     <string>1.1</string> 

А вот соответствующая часть Info.plist из приложения в Архиве пачке:

<key>CFBundleShortVersionString</key> 
<string>1.1</string> 
<key>CFBundleSignature</key> 
<string>????</string> 
<key>CFBundleSupportedPlatforms</key> 
<array> 
    <string>iPhoneOS</string> 
</array> 
<key>CFBundleVersion</key> 
<string>1.1</string> 

Все номера версий в моем обновленном приложении говорят 1.1, iTunesConnect говорит, что он ожидает 1.1 ... но он жалуется, что число ошибочно.

Что мне не хватает?

+0

Вы отправляете через органайзер или загрузчик приложений? – CodaFi

+0

Вы говорите, что вы показываете «соответствующую» часть Info.plist (и Bundle Archive), но ключ, который Validate жалуется ('CFBundleVersion'), не отображается ни в одном из этих фрагментов, которые вы опубликовали. Поэтому либо он отсутствует (и это проблема), либо вы просто разместили неправильный раздел кода. Этот ключ соответствует полю 'Build' в настройках целевого приложения iOS, а не' Version', как вы могли ожидать. – lnafziger

+0

CFBundleVersion является последним ключом в последнем Info.plist, который я опубликовал (который находится внутри самого приложения). –

ответ

47

Оказалось, что у меня возникла некоторая проблема в моем исходном представлении, из-за которого видимая пользователем версия «1.0», а внутренняя версия пакета - «1.2». Поэтому я изменил свою новую версию на 1.3 и 1.3, и работа была выполнена.

enter image description here

+0

+1 за этот чрезвычайно полезный снимок экрана. – Anshu

+1

Я становился сумасшедшим, потому что 1.09 кажется больше, чем 1,3 для Apple. Спасибо человеку за скриншот. – Kasas

+0

+1 Удивительное и простое объяснение. У меня была одна и та же проблема и часами пытались ее решить. Большое спасибо. –

23

То же самое случилось со мной. Моя текущая версия App Store была 2.03. Я попытался загрузить 2.1. Все, что мне нужно было сделать, это изменить его на 2.10, и это сработало.

+7

Это происходит потому, что ведущие нули игнорируются, поэтому ваша текущая версия фактически анализируется как 2.3. – Andy

41

FYI. Apple думает 1.11> 1.2, поэтому, если вы собираетесь с 1.11 до 1.2, вам нужно пройти весь путь до 1.20.

Наслаждайтесь.

+0

Это потому, что Apple разбивается на точек и сравнивает компонент за компонентом. Это исторически непротиворечиво и означает, что «1.11» обычно выражается на платформе Apple как «1.1.1». –

+0

@ Джонатан Но 1.11 не выше 1,2! Итак, вы сказали бы, что 1.1.1 выше 1.2.0. – Binarian

+14

@Viktor: 1.11 * is * выше 1.2. * Это не математические числа *. Каждый компонент сравнивается отдельно, поэтому '1 == 1', но' 11> 2'. –

5

Увеличение значения CFBundleShortVersionString или строки «Короткий вариант перевода», выполнило задание для меня.

2

Вот как я исправил проблему (и я предполагаю, что это проблема с большим количеством людей):

1) Нажмите на вкладке Общие настройки проектов (которые можно просмотреть, нажав на имя вашего проекта, которое находится в верхней части всех файлов кода).

2) Убедитесь, что поле сборки соответствует тому, что вы положили в свой слой, для клавиши «Bundle Version».

Это была проблема для меня, по какой-то причине они были не в синхронизации. Я думаю, что когда вы меняете ключ версии Bundler, он должен синхронизироваться (и наоборот). Но по какой-то причине этого не произошло - может быть, ошибка.

1

Это может быть вызвано по другой причине.

У меня была активная бета-версия TestFlight. Сложение 2020, версия 407

Я представил приложение для чиновника обзор App Store. Build 2020, версия 435, и он был одобрен. Он просто сидит там, ожидая, когда я заставлю его жить в App Store.

Не добавляя сложную боковую историю, я хотел бы дать обновленной версии моей бета-версии TestFlight для предварительного просмотра официальной версии App Store в течение нескольких дней, прежде чем сделать версию App Store вживую. Почему ты спрашиваешь? Поскольку они получали бесплатные функции, стоило бы денег, как только приложение выйдет вживую.

Итак, я отправил Build 2020, версия 436, в TestFlight, и он был отклонен.

Он был отклонен, потому что у меня есть утвержденный официальным кандидатом App-Store, с тем же номером сборки

Решение: Измените номер сборки вашей TestFlight версии. Я отправил Build 20200 (я добавил дополнительный ноль) версию 436 в TestFlight, и она была одобрена. Не волнуйтесь, вы все равно можете нажать эту сборку в одну и ту же тестовую группу TestFlight, если вы все еще используете тот же BundleID.

Смежные вопросы