'Сессия завершена' при запуске приложения из Delphi в iOS Simulator

Я пытаюсь развернуть многоплатформенное приложение (написанное на Delphi XE7 + Firemonkey) в iOS Simulator с помощью следующих параметров:

  • Delphi XE7
  • OSX 10.8 Mountain Lion
  • XCode 5.1.1
  • Инструменты командной строки
  • PAServer 15.0 (iOS SDK 7.1 - также тестировался с 6.1)

Мое приложение должно работать в Windows, Android, iOS и OSX. Работает уже для всех, кроме iOS, включая OSX, которую я компилирую с той же настройкой, без проблем.

Я создал профиль подключения к своему PAServer, используя пароль, и этот профиль работает нормально как при компиляции в OSX, так и при компиляции приложения hello-world-ish для iOS, всего с помощью одной или двух кнопок.

Что касается моего приложения, я могу без проблем скомпилировать и собрать его для iOS, но когда я пытаюсь запустить его в iOS-Simulator, оно компилируется, развертывается и при запуске выходит из строя, возвращая ошибку:

Невозможно запустить процесс на «192.168.25.37» с параметрами из профиля «iOS». Была возвращена следующая ошибка: «Сеанс завершен».

Это мое первое приложение для iOS, поэтому я плаваю здесь в чужих водах. У него нет внешних библиотек, за исключением, конечно, тех, которые сам Delphi может добавить при компиляции. Я сам этого не делал, и приложение имеет только формы и обращается к текстовому файлу в своей папке песочницы и к серверу mysql через UniDac (прямой режим, без dll).

Я попытался разобраться в этом, закомментировав разумный код в своем приложении, а именно все, что было специфично для iOS, но это ничего не дало.

Затем я создал новое приложение, просто кнопку и ShowMessage в его обработчике, и оно сработало.

Следующим шагом я начал опробовать свои модули в этом более простом приложении. Первым, что я попробовал, был модуль, который у меня есть для пользовательского компонента (TRectangle с TPanel, 3x TImage, TLabel и TCheckbox внутри), с другим классом с Generics TObjectList компонента). Я просто добавил этот модуль, не создавая экземпляра какого-либо класса, и он потерпел неудачу, сообщив о «неизвестной ошибке».

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

Я тогда установил SDK 7.1, но тоже не смог.

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

Приложение Delphi FireMonkey для iOS: ошибка при развертывании в iPhone Simulator 8.1 В этом случае есть проблема с PAServer, и есть исправление для нее, но это относится к SDK 8.1 и XCode 6+

Невозможно установить и запустить приложение iOS на Simulator из командной строки - Simulator iOS 6.1 Xcode 5 на mavericks Я не смог установить ios-sim указанным способом, скорее всего, потому что у меня нет опыта работы с OSX. Тем не менее, я клонировал его из GitHub и сумел установить его через командную строку и XCodeBuild с некоторой помощью из Интернета, но когда я попытался запустить свое приложение, ios-sim сказал, что ему нужен как минимум XCode 6, которого у меня нет ( OSX 10.8 здесь, я считаю, что Xcode 6 требует как минимум 10.9).

После этого я установил еще один, iPhoneSim, и странно, после этого ios-sim больше не задает вопросы для Xcode6. Тем не менее, мне не удается запустить мое приложение (даже недавно созданный hello-world-ish, который работает при запуске через Delphi), заявляя:

DEBUG] Не удалось найти класс DTiPhoneSimulatorSystemRoot во время выполнения.

Даже пытался установить WaxSim, но этот не установился.

Однако я не пытался скомпилировать его для iDevice, потому что для этого мне нужно подписаться на программу Apple Developer, и я надеялся сделать это только после того, как убедился, что все работает нормально. К тому же я не уверен, что это будет иметь значение.

Кто-нибудь сталкивался с этой проблемой «Сеанс завершен», и если да, знаете ли вы какую-либо причину и исправление.

Спасибо


person nunopicado    schedule 11.06.2015    source источник
comment
Кстати, вам нужно будет переключиться на поддержку 64-битной iOS8, прежде чем вы сможете отправить что-либо в магазин приложений.   -  person Jerry Dodge    schedule 11.06.2015
comment
Спасибо за подсказку, не знал этого. Это значит, что мне придется обновить мой Mac до OSX Y, верно? Я считаю, что не смогу использовать iOS8 в моем Mountain Lion ...   -  person nunopicado    schedule 11.06.2015
comment
Думаю, да, не помню, у меня уже было последнее обновление OS X и XCode. Также XE7 потребуется исправление для iOS8. Хотя я использую XE8.   -  person Jerry Dodge    schedule 11.06.2015


Ответы (2)


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

Перейдите в Project -> Project Options -> Version Info.

В конфигурации симулятора iOS Delphi IDE (XE7) автоматически вставляет следующий ключ и значение:

CFBundleVersion = 1.0.0

Как оказалось, есть несколько других настроек, необходимых для проекта iOS: Вот ключи, найденные в демонстрационном приложении Embarcaderos iOS «Местоположение», которое решило мою проблему, как только я вставил их в свой проект:

CFBundleName = $(ModuleName)
CFBundleDevelopmentRegion = en
CFBundleDisplayName = $(ModuleName)
CFBundleIdentifier = $(ModuleName)
CFBundleInfoDictionaryVersion = 7.1
CFBundlePackageType = APPL
CFBundleSignature = ????
LSRequiresIPhoneOS = true
CFBundleAllowMixedLocalizations = YES
CFBundleExecutable = $(ModuleName)
UIDeviceFamily = iPad & iPhone
CFBundleResourceSpecification = ResourceRules.plist
NSLocationAlwaysUsageDescription = The reason for accessing the location information of the user
NSLocationWhenInUseUsageDescription = The reason for accessing the location information of the user
FMLocalNotificationPermission = false

Есть один специальный ключ, который, я считаю, является основной причиной ошибки «Сеанс завершен»: UIDeviceFamily.

У этого ключа есть 3 варианта (вместо того, чтобы принимать любое строковое значение): - iPhone - iPad - iPhone и iPad

Без этого симулятор iOS не знает, какой это тип приложения с точки зрения пользовательского интерфейса, поэтому он не запускается. Вам нужно добавить ключ с соответствующим именем ключа, а затем выбрать тип пользовательского интерфейса, используя соответствующий ComboBox.

Также в проекте отсутствуют:

Проект -> Параметры проекта -> Приложение Существует список для iPhone и iPad с путями к значкам по умолчанию в нескольких размерах, который неправильно заполняется при создании нового проекта.

Итак, вы можете использовать свои собственные значки и изображения или использовать значения по умолчанию:

iPhone:

Application Icon 57x57: $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png
Application Icon 60x60: $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png
Application Icon 87x87: $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png
Application Icon 114x114: $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png
Application Icon 120x120: $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png
Application Icon 180x180: $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png
Launch Image 320x480: $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png
Launch Image 640x960: $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png
Launch Image 640x1136: $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png
Launch Image 750x1334: $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png
Launch Image 1242x2208: $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png
Launch Image 2208x1242: $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png
Spotlight Search Icon 29x29: $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png
Spotlight Search Icon 40x40: $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png
Spotlight Search Icon 58x58: $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png
Spotlight Search Icon 80x80: $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png


iPad:

Application Icon 72x72: $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png
Application Icon 76x76: $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png
Application Icon 144x144: $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png
Application Icon 152x152: $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png
Launch Image 768x1004: $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png
Launch Image 768x1024: $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png
Launch Image 1024x748: $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png
Launch Image 1024x768: $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png
Launch Image 1536x2008: $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png
Launch Image 1536x2048: $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png
Launch Image 2048x1496: $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png
Launch Image 2048x1536: $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png
Spotlight Search Icon 40x40: $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png
Spotlight Search Icon 50x50: $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png
Spotlight Search Icon 80x80: $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png
Spotlight Search Icon 100x100: $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png
Setting Icon 29x29: $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png
Setting Icon 58x58: $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png
person nunopicado    schedule 14.06.2015

У нас было такое же сообщение об ошибке, но с немного другой средой (Delphi XE8 и Yosemite).

В нашем случае в названии подключения были скобки. Мы выяснили это, переведя PAServer в подробный режим, используя команду «v» и повторив команды, которые мы видели в отдельном терминале.

Удаление скобок из имени соединения решило проблему для нас.

person S.L. Barth    schedule 23.02.2016