';会议结束';将应用程序从Delphi启动到iOS模拟器时

';会议结束';将应用程序从Delphi启动到iOS模拟器时,delphi,ios-simulator,delphi-xe7,paserver,Delphi,Ios Simulator,Delphi Xe7,Paserver,我正试图通过以下参数将多平台应用程序(用Delphi XE7+Firemonkey编写)部署到iOS模拟器: 德尔福XE7 OSX 10.8美洲狮 代码5.1.1 命令行工具 PAServer 15.0(iOS SDK 7.1-也使用6.1进行了测试) 我的应用程序需要在Windows、Android、iOS和OSX中运行。除了iOS,其他的都可以使用了,包括我使用相同的设置编译的OSX,没有任何问题 我使用密码创建了一个到我的PASServer的连接配置文件,该配置文件在编译到OSX和为i

我正试图通过以下参数将多平台应用程序(用Delphi XE7+Firemonkey编写)部署到iOS模拟器:

  • 德尔福XE7
  • OSX 10.8美洲狮
  • 代码5.1.1
  • 命令行工具
  • PAServer 15.0(iOS SDK 7.1-也使用6.1进行了测试)
我的应用程序需要在Windows、Android、iOS和OSX中运行。除了iOS,其他的都可以使用了,包括我使用相同的设置编译的OSX,没有任何问题

我使用密码创建了一个到我的PASServer的连接配置文件,该配置文件在编译到OSX和为iOS编译hello world ish应用程序时都可以正常工作,只需一个或两个按钮

至于我的应用程序,我可以为iOS编译和构建它,但当我尝试在iOS模拟器中运行它时,它会编译、部署,启动时失败,返回错误:

无法使用“iOS”配置文件中的参数在“192.168.25.37”上启动进程。 返回了以下错误:“会话已结束”

这是我在iOS上的第一个应用程序,所以我正在陌生的水域里游泳。 它没有外部库,当然除了Delphi自己在编译时可能添加的库之外。我自己没有,应用程序只有表单,可以通过UniDac(直接模式,无dll)访问沙盒文件夹中的文本文件和mysql服务器

我试图追根究底,在我的应用程序中注释出合理的代码,即所有特定于iOS的代码,但这毫无意义

然后,我创建了一个新的应用程序,只需在其处理程序上添加一个按钮和一条ShowMessage,就可以了

下一步,我开始在这个简单的应用程序上试用我的应用程序单元。我尝试的第一个是一个定制组件的单元(一个包含TPanel、3x TImage、TLabel和TCheckbox的TRectangle),还有一个类包含组件的泛型TObjectList)。我只是添加了这个单元,没有实例化任何类,它失败了,报告了一个“未知错误”

因此,我从项目中删除了该单元以进行双重检查:再次失败,使用与以前相同的按钮和showmessage

我已经安装了SDK 7.1,但也失败了

我一直在浏览网页,试图从中找出一些道理,并发现了几个类似的案例,但没有一个能真正帮助我:

在这种情况下,PAServer有一个问题,并且有一个修复程序,但它适用于SDK 8.1和XCode 6+

我无法通过推荐的方式安装ios sim卡,很可能是因为我没有OSX经验。 尽管如此,我还是从GitHub克隆了它,并在互联网的帮助下通过命令行和XCodeBuild安装了它,但当我尝试运行我的应用程序时,ios sim表示它至少需要XCode 6,而我没有(这里是OSX 10.8,我相信XCode 6至少需要10.9)

在那之后,我安装了另一个iPhone sim,奇怪的是,在那之后,ios sim不再对Xcode6有任何疑问。尽管如此,它仍然无法启动我的应用程序(即使是新创建的hello world ish,在通过Delphi运行时也能正常工作),并声明:

调试]在运行时找不到类DTiPhoneSimulatorSystemRoot

甚至尝试安装WaxSim,但这一个安装失败

然而,我并没有尝试为iDevice编译它,因为为此我需要订阅Apple Developer程序,我希望只有在确保一切正常后才能这么做。另外,我不确定这会有什么不同

是否有人遇到过此“会话已结束”问题,如果是,您是否知道任何原因和解决方法


谢谢

几天后,我发现了问题所在,因此我将在这里发布解决方案,以帮助可能有相同问题的其他人

转到项目-->项目选项-->版本信息

在de iOS模拟器配置下,Delphi IDE(XE7)自动插入以下键和值:

CbundLeverVersion=1.0.0

事实证明,iOS项目还需要其他一些调整: 以下是Embarcaderos iOS演示应用程序“Location”中的密钥,在我将它们插入到项目中后,它解决了我的问题:

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模拟器就不知道它是哪种类型的应用程序,所以它不会启动。 您需要添加具有相应键名的键,然后使用相应的组合框选择UI类型

项目中还缺少以下内容:

项目->项目选项->应用程序 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

我们有相同的错误消息,尽管环境稍有不同(Delphi XE8和Yosemite)

在我们的例子中,连接的名称中有括号。 我们通过将PAServer置于详细模式,使用“v”命令,并重复在单独的终端中看到的命令来发现这一点


编辑连接名称中的括号为我们解决了问题。

另一个不相关的提示是,在向应用商店提交任何内容之前,您必须切换到支持iOS8 64位。感谢您的提示,我不知道这一点。这意味着我必须把我的Mac升级到OSX,对吗?我相信我将无法在我的Mountain Lion中使用iOS8…我相信是的,不记得了,我已经有了OSX和XCode的最新更新。此外,XE7还需要iOS8的热修复程序。但是我使用XE8。