将应用程序从Delphi推送到iOS模拟器时,“会话结束”

时间:2015-06-11 13:44:46

标签: delphi ios-simulator delphi-xe7 paserver

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

  • 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,也可以编译iOS的hello-world-ish应用程序,只需要一两个按钮。

至于我的应用程序,我可以在没有问题的情况下为iOS编译和构建它,但是当我尝试在iOS-Simulator中运行它时,它会编译,部署,并在启动时失败,返回错误:

  

无法使用“iOS”配置文件中的参数启动“192.168.25.37”进程。   返回以下错误:'Session Ended'

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

我试图找到它的底部,在我的应用程序中评论出合理的代码,即所有特定于iOS的内容,但这无关紧要。

然后我创建了一个新的应用程序,只是一个按钮和一个ShowMessage在它的处理程序上,它工作。

下一步,我开始在这个更简单的应用上试用我的应用单元。我尝试的第一个是我有一个自定义组件的单元(一个带有TPanel的TRectangle,3x TImage,一个TLabel和一个TCheckbox里面),另一个类带有组件的Generics TObjectList。我刚刚添加了这个单元,没有实例化任何类,但它失败了,报告了一个“未知错误”。

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

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

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

Delphi FireMonkey iOS App: Error while Deploying to iPhone Simulator 8.1 在这种情况下,PAServer存在问题,并且有一个修复,但它指的是SDK 8.1和XCode 6 +

Unable to install and run iOS app on Simulator from command line - Simulator of iOS 6.1 Xcode 5 on 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程序,我希望只有在确保一切正常后才能这样做。另外,我',不确定它会有所作为。

是否有人遇到过“会话结束”问题,若然,您是否知道有任何理由和解决方法。

谢谢

2 个答案:

答案 0 :(得分:1)

几天后,我发现了问题所在,所以我会在这里发布解决方案,以帮助可能遇到同样问题的其他人。

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

在de iOS Simulator配置下,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个选项(而不是接受任何字符串值): - 苹果手机 - iPad - iPhone& ipad公司

没有这个,iOS模拟器不知道它是哪种类型的应用程序,UI智能,所以它不会启动。 您需要使用相应的键名添加键,然后使用相应的ComboBox选择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

答案 1 :(得分:1)

虽然环境略有不同(Delphi XE8和Yosemite),但我们收到了同样的错误消息。

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

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