RoboVM的最低iOS版本支持

RoboVM的最低iOS版本支持,ios,robovm,Ios,Robovm,我刚刚尝试在我的iPodtouch(第2代)上使用“iOS设备应用”启动配置启动我正在用RoboVM构建的应用程序。它为“thumbv7”目标进行了完整构建,上载了一些文件,在验证应用程序的步骤中,它停止运行,并显示以下消息: “启动…”遇到问题。 “启动…”期间发生内部错误。 设备版本 我的iPod运行的是iOS v4.2.1(8C148),我的应用程序(至少是我编写的部分)只使用iOS 3.1或更早版本提供的功能(这是我使用的最“高级”功能) 这给我留下了以下问题: 如何确定我的应用程序

我刚刚尝试在我的iPodtouch(第2代)上使用“iOS设备应用”启动配置启动我正在用RoboVM构建的应用程序。它为“thumbv7”目标进行了完整构建,上载了一些文件,在验证应用程序的
步骤中,它停止运行,并显示以下消息:

“启动…”遇到问题。
“启动…”期间发生内部错误。
设备版本
我的iPod运行的是iOS v4.2.1(8C148),我的应用程序(至少是我编写的部分)只使用iOS 3.1或更早版本提供的功能(这是我使用的最“高级”功能)

这给我留下了以下问题:

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

正如Mario Zechner在链接帖子中解释的那样,RoboVM目前支持iOS 7及以上版本,也可以非正式地支持iOS 6


经过进一步的挖掘和测试,我现在已经找到了(我认为是)这个问题的一个几乎完整的答案

一个简短的免责声明:我仍然在使用RoboVM v1.5和Xcode v6.4,因为它们完美地满足了我的需求,我坚信“如果它没有坏,就不要修复它”。所以,这里的一些信息可能已经过时了

有两个因素在起作用:支持特定的设备平台(ARMv6、ARMv7等)和支持特定版本的iOS

RoboVM很早就放弃了对ARMv6的编译器支持,因此除了使用旧安装的RoboVM编译一个应用程序版本之外,现在要支持ARMv6设备已经没有什么可做的了

iOS版本支持比这更灵活:

截至,RoboVM的
Info.plist.xml
支持名为
MinimumOSVersion
的条目,如:

<key>MinimumOSVersion</key>
<string>5.0</string>
因此,我假设此设置还确定iTunes商店是否为特定设备提供应用程序

如果不指定此键,则它以前默认为5.0,但在去年9月将默认值更改为6.0

请注意,此设置显然不能保证应用程序将在给定设备上运行。

理论到此为止。现在进行一些实际实验:

我能够将iPhone3GS降级到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的iPad1,即。当MinimumOSVersion设置为5.1.1时,我的完整游戏应用程序可以在设备上正常安装和运行。但是,当RoboVM尝试从IDE启动应用程序时,启动失败,在设备上安装应用程序后出现以下异常:

AppLauncher失败,出现异常:
java.lang.RuntimeException:启动失败:对命令“QListThreadsInStopReply”的意外响应“”
在
然后我可以通过点击图标来运行这个应用程序,它可以顺利运行,只是调试它(比如在Eclipse控制台中查看System.out)不起作用。

结论:

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

因此,此设置可以支持2009年或更高版本发布的所有iOS设备,仅不包括前两款iPhone(1代和3G)和iPod Touch(第1代和第2代)。从iPhone 3GS开始支持iPhone,从第三代开始支持iPod Touch,并且支持所有iPad


有关iOS设备的详细概述,您可以查看。

也对RoboVM支持的iOS版本的信息感兴趣。您能找到答案吗?@nadavwr我刚刚发布了一个答案,没有完全涵盖这个问题,但至少包含了一些关于最低要求的有用上限,以及一种在需要时解决这些问题的相当粗糙的方法。