RoboVM

时间:2015-05-08 19:56:55

标签: ios robovm

我刚尝试使用“iOS Device App”启动配置启动我在iPod Touch(2ng gen)上使用RoboVM构建的应用程序。它完成了“thumbv7”目标的完整构建,上传了一些文件,并在VerifyingApplication步骤中,它停止了以下消息:

'Launching ...' has encountered a problem.
An internal error occurred during: "Launching ...".
DeviceOSVersionTooLow

我的iPod正在运行iOS v4.2.1(8C148)而我的应用程序(至少我编写的部分)仅使用从iOS 3.1或更早版本开始的可用功能(CADisplayLink是我使用的最“高级”功能)

这给我留下了以下问题:

  • 我的应用的iOS版本要求是如何确定的?是在某个配置文件中指定的(注释掉UIRequiredDeviceCapabilities中的Info.plist.xml部分没有帮助),还是RoboVM分析我的代码并从那里算出来?
  • RoboVM本身是否有最低版本要求?如果是这样,我可以以某种方式调整它吗?

2 个答案:

答案 0 :(得分:3)

经过一些挖掘和测试之后,我现在想出了(我相信的)这个问题的实际答案。

快速免责声明:我仍在使用RoboVM v1.5和Xcode v6.4,因为它们可以很好地满足我的需求,并且我非常坚信,如果它是一个"打破了,不要修理它"。所以,这里的一些信息可能已经过时了。

有两个因素在起作用:支持特定设备平台(ARMv6,ARMv7,...)并支持特定版本的iOS。

RoboVM很早就放弃了对ARMv6的编译器支持,因此除了使用旧版RoboVM编译应用程序版本之外,现在几乎没有什么可以支持ARMv6设备。

iOS版本支持比这更灵活:

v1.0 beta 4起,RoboVM的Info.plist.xml支持名为MinimumOSVersion的条目,如:

<key>MinimumOSVersion</key>
<string>5.0</string>

此条目确定是否允许在设备上安装应用。如果您将其设置为高于设备操作系统版本并尝试在设备上执行应用程序,则在启动期间将收到以下错误消息:

Launch failed. Check the RoboVM console for more information.
 DeviceOSVersionTooLow

因此,我假设此设置还决定了应用是否在iTunes商店中为特定设备提供。

如果您未指定此密钥,则默认为5.0,但to fix some issue with XCode 7,默认值已于去年9月更改为6.0。

请注意,此设置显然无法保证应用将在给定设备上运行

这个理论太多了。现在进行一些实际的实验:

我能够将iPhone 3GS降级到iOS v4.1.1并尝试在其上运行最简单的RoboVM hello world应用程序,并将MinimumOSVersion设置为4.1。该应用程序将安装正常,但会在启动时立即崩溃,而无需任何调试日志到Eclipse控制台。将手机升级回iOS v6.1.6后,应用运行正常。因此,即使在ARMv7设备上,RoboVM v1.5(以及更高版本,我也假设)不再支持v4.1.1(可能更低)

我还得到了运行iOS v5.1.1的iPad 1,即the latest available version of iOS for this device。将MinimumOSVersion设置为5.1.1,我的完整游戏应用程序将安装并在设备上正常运行。但是,当RoboVM尝试从IDE启动应用程序时,在设备上安装应用程序后,启动失败并出现以下异常:

AppLauncher failed with an exception:
java.lang.RuntimeException: Launch failed: Unexpected response '' to command 'QListThreadsInStopReply'
    at ...

然后我可以通过点击它的图标来运行应用程序,它可以顺利运行,只是调试它(比如在Eclipse控制台中看到System.out)并不起作用。

<强>结论:

通过在MinimumOSVersion中将5.1.1设置为Info.plist.xml,与Xcode v6.4配对的RoboVM v1.5可支持具有ARMv7或更高版本的所有 iOS设备处理器,只要它们运行iOS v5.1.1或更高版本(iOS v5.1.1适用于所有ARMv7或更好的设备)。

因此,此设置可支持2009年或之后发布的所有 iOS设备,仅排除前两部iPhone(1和3G)和iPod Touch(第一代和第二代)。从iPhone 3GS开始可以支持iPhone,从第3代开始可以支持iPod Touch,并且可以支持所有iPad。

有关iOS设备的精彩概述,您可以查看iOSSupportMatrix

答案 1 :(得分:0)

正如Mario Zechner在链接帖子中解释的那样,RoboVM此时支持iOS 7及更高版本,并且还可以非正式地支持iOS 6。

https://groups.google.com/d/msg/robovm/u6hk8kSFfuY/XEtQayXW6_sJ