Недействительная ошибка запуска изображения при загрузке IPA с загрузчиком приложений ERROR ITMS-90094

Я пытаюсь загрузить файл .ipa с помощью утилиты Apple Application Loader на моем Mac. Когда я это сделаю, я получаю эту ошибку:

ERROR ITMS-90094: «Недопустимое изображение запуска – ваше приложение содержит образ запуска с модификатором размера, который поддерживается только для приложений, созданных с помощью iOS 6.0 SDK или более поздней версии».

Приложение построено с использованием SDK iOS 8.2 в Embarcadero RAD Studio XE7 / C ++ Builder. Я создал действующее мобильное приложение Adhoc Distribution, которое находится на моем Mac и используется PAServer 15.0 & Xcode 6.2 для компиляции приложения. Я правильно определил, что в моих свойствах проекта | Предоставление для распределения Adhoc на платформе iOS. Я изменил режим выпуска, и в разделе «Конфигурация» я выбрал Adhoc через Project Manager. Сначала я очищаю приложение, затем создаю его, а затем развертываю. Когда я закончил, я получаю действительный файл .ipa, который отлично работает на моих тестовых устройствах.

Согласно Apple, эта проблема возникает, когда вы создаете приложение с помощью SDK IOS 5.1 или более ранней версии, но включаете образ [email protected] (для поддержки 4-дюймового дисплея iPhone 5 для iPhone 5). Он говорит, что для решения этой проблемы создайте приложение против iOS 6.0 SDK или выше. Но, как я уже сказал, я использую iOS 8.2 SDK. Я также пробовал 8.1, и это единственные версии IOS SDK, которые я даже установил в своей системе.

В нем говорится, что если вы не собираетесь создавать свое приложение против SDK iOS 6, то удалите из проекта проект [email protected] Я попытался удалить этот файл, и ошибка исчезла, но затем вы получите еще одну ошибку: «Требования к оптимизации iPhone 5 – ваш бинарный файл не оптимизирован для iPhone 5.»

Он должен каким-то образом обнаруживать неверную версию из файла IPA (что я могу только предположить, это как-то проблема на стороне RAD Studio уравнения, в отличие от Xcode или тонны других людей будет иметь эту проблему). Другие должности используют такие термины, как «Цель развертывания», «Базовый SDK» и «Целевой SDK».

Я считаю, что я правильно все установил, но как я могу это исправить, так что IPA, созданный XE7, должным образом обнаружен приложением Application Loader как встроенный с более поздним SDK, чем iOS 6.0?

Резолюции, которые я пробовал (без успеха):

Большинство результатов поиска говорят, что они строятся с более новой версией Xcode (не менее 5 или новее), но я использую последнюю версию Xcode 6.2. Примечание. Всюду, где говорится о версии 6.0, я также пробовал 7.0. Параметры проекта относятся к цели: Все конфигурации – платформа устройств iOS.

  1. http://207.211.86.211/index.php/answers/my-discussion/upload-to-itunesconnect
    У этого парня была такая же проблема, и он сказал, чтобы проверить все ваши параметры проекта | Изображения приложений – это правильные размеры. Я проверил, что мои. Он также рекомендует обеспечить, чтобы вы строили версии релизов iOS SDK от Apple. Через Инструменты | Варианты | Параметры среды | SDK Manager, выберите iPhoneOS 8.x и нажмите «Обновить локальный кэш файлов». Это тоже не помогло.

  2. https://pjstrnad.com/submitting-application-apple-store-delphi/
    Сначала он рекомендует создать пользовательский файл Info.plist в разделе Project | Развертывание. Затем, чтобы исправить проблему с неправильным изображением, он говорит, что вам нужно добавить ключ MinimumOSVersion и установить его 6.0.

    Добавить в Custom.info.plist:

    <Ключ> MinimumOSVersion </ ключ>
    <Строка> 6,0 </ строка>

  3. Поскольку я могу опубликовать только две ссылки, вам нужно будет найти на community.embarcadero.com ответы на ответы «Проблемы с развертыванием для iOs 8.1» для исходного сообщения.

    Здесь они рекомендуют установить Hotfix 30036 «Исправление для отправки приложений iOS в Apple AppStore» – что я и сделал. Они также предложили варианты проекта | Компилятор Delphi | Компиляция, добавление «-ios-version-min: 6.0» в «Дополнительные параметры» для передачи компилятору. Не уверен, что это повлияет на меня, так как я использую BCB, но я тоже это пробовал.

  4. Статья о stackoverflow описывает, как использовать otool и grep в файле .IPA для определения информации о версии. Поэтому я распаковал файл ipa, запустил otool w / grep, который вернул этот результат:

    cmd = LC_VERSION_MIN_IPHONEOS
    cmdsize = 16
    версия = 7.0
    sdk = 7.1

    Хотя он не говорит 8.1 или 8.2, как я ожидал, обе версии 7+. Это определенно новее, чем 6.0, поэтому должно быть где-то еще приложение Loader получает версию.

  5. Измененные параметры проекта | C ++ Linker: Advanced: минимальная версия iOS поддерживается до 6.0.

  6. Измененные параметры проекта | Компилятор Delphi | Связь: Минимальная версия iOS, поддерживаемая до 6.0.

  7. Попытался создать совершенно новое приложение Multi-Device, обеспечивающее его загрузку и загрузку через Application Loader. Это терпит неудачу с той же точной ошибкой.

Ответ:

Между поддержкой Embarcadero и сообщениями об ошибках / документами от Apple я наконец выяснил, в чем проблема. Оказывается, Apple позволит вам попробовать и отправить приложение Ad hoc в iTunes Connect, хотя это должно быть мобильное приложение в App Store. Несмотря на то, что вы еще не распространяетесь в общедоступном App Store, но развертываете частную бета-версию для избранной группы пользователей, вы все равно отправляете ее в качестве приложения в App Store. Разница – это бета-право, которое оно имеет.

Я принял Ad hoc, чтобы означать, что он собирается выбрать определенное количество устройств за пределами App Store через TestFlight – но это не так (по крайней мере, с TestFlight в любом случае). Проблема связана с тем, что сообщение об ошибке Apple было совершенно бесполезно. Ошибка должна была сказать что-то вроде «Вы должны использовать резервное хранилище в App Store, а не Ad hoc или Development» вместо «Вы включаете недопустимый стартовый образ для 6.0 SDK».

Хуже того, когда TestFlight был сторонним сервисом, инструкции должны были отправить его как Ad hoc. Таким образом, наша команда запуталась, так как это изменилось, когда Apple купила ее (но это не было очевидно или, по крайней мере, ясно в любых документах Embarcadero).

Еще одна проблема – терминология. Термины CERTIFICATE и PROVISION иногда кажутся взаимозаменяемыми или случайными из того или другого – и это различие весьма важно.

Таким образом, решение заключается в использовании мобильного приложения App Store (подписанного с сертификатом распространения) вместо Ad hoc. Приложение было успешно отправлено в iTunes Connect.

  • Где находятся стандартные элементы управления iOS \ styles в Delphi XE2?
  • Как я могу добавить ListBoxItem программно?
  • Общий доступ к файлам Delphi XE2 и iOS
  • Delphi FireMonkey iOS App: ошибка при развертывании на iPhone Simulator 8.1
  • Приложение Delphi XE2 Firemonkey iOS поддерживает совместимость с приложениями
  • Сохранить TiniFile из приложения в iOS
  • Разметка и дополнение Delphi TGridLayout между элементами
  • Подключение к внешней базе данных в iOS
  • Delphi + iOS: как объявить простой ObjC-класс?
  • Не удается показать сообщение во время загрузки программы на iOS
  • XE7 update 1 и iOS 8.1 симулятор не работает
  • Давайте будем гением компьютера.