RoboVM 的最低 iOS 版本支持
Minimum iOS version support for RoboVM
我刚刚尝试使用 "iOS Device App" 启动配置在我的 iPod Touch(2ng 代)上启动我使用 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 是我使用最多 "advanced" 的功能)。
这给我留下了以下问题:
- 我的应用的 iOS 版本要求是如何确定的?它是在某些配置文件中指定的(注释掉
Info.plist.xml
中的 UIRequiredDeviceCapabilities
部分没有帮助)还是 RoboVM 分析我的代码并从那里弄清楚?
- RoboVM 本身有最低版本要求吗?如果是这样,我能以某种方式调整它吗?
正如 Mario Zechner 在链接 post 中解释的那样,RoboVM 目前支持 iOS 7 及更高版本,也可以非正式地支持 iOS 6。
https://groups.google.com/d/msg/robovm/u6hk8kSFfuY/XEtQayXW6_sJ
经过更多的挖掘和测试,我现在想出了(我认为是)这个问题的几乎完整的答案。
快速免责声明:我仍在使用 RoboVM v1.5 和 Xcode v6.4,因为它们可以很好地满足我的需求,而且我坚信 "if it ain't broke, don't fix it".所以,这里的一些信息可能已经过时了。
有两个因素在起作用:对特定设备平台(ARMv6、ARMv7 等)的支持以及对特定版本 iOS 的支持。
RoboVM 很早就放弃了对 ARMv6 的编译器支持,因此除了使用旧安装的 RoboVM 编译应用程序版本之外,支持 ARMv6 设备的工作不多now-a-days。
iOS版本支持比较灵活:
自 v1.0 beta 4 起,RoboVM 的 Info.plist.xml
支持名为 MinimumOSVersion
的条目,例如:
<key>MinimumOSVersion</key>
<string>5.0</string>
此条目确定是否允许在设备上安装应用程序。如果您将其设置为高于设备 OS 版本并尝试在设备上执行该应用程序,您将在启动期间收到以下错误消息:
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 应用程序 OS版本设置为 4.1。该应用程序可以正常安装,但在启动时会立即崩溃,而 Eclipse 控制台没有任何调试日志。将 phone 升级回 iOS v6.1.6 后,应用程序 运行 正常。因此,即使在 ARMv7 设备上,RoboVM v1.5(和更高版本,我假设)不再支持 v4.1.1(可能更低)。
我还得到了 iPad 1 运行ning iOS v5.1.1,即 the latest available version of iOS for this device。将最低 OS 版本设置为 5.1.1,我的完整游戏应用程序可以安装并且 运行 在设备上运行良好。但是,当 RoboVM 尝试从 IDE 启动应用程序时,在设备上安装应用程序后启动失败并出现以下异常:
AppLauncher failed with an exception:
java.lang.RuntimeException: Launch failed: Unexpected response '' to command 'QListThreadsInStopReply'
at ...
我可以 运行 然后单击应用程序的图标,它可以正常工作,只是调试它(就像在 Eclipse 控制台中看到 System.out 一样)不起作用。
结论:
通过在Info.plist.xml
中将MinimumOSVersion
设置为5.1.1
,RoboVM v1.5搭配Xcodev6.4可以支持all iOS 具有 ARMv7 或更好处理器的设备,前提是它们 运行 iOS v5.1.1 或更好(iOS v5.1.1 适用于所有 ARMv7 或更好的设备) .
因此,此设置可以支持 所有 iOS 2009 年或之后发布的设备,仅排除前两个 iPhone(1 和 3G ) 和 iPod Touch(第一代和第二代)。从 iPhone 3GS 开始可以支持 iPhone,从第三代开始可以支持 iPod Touch,并且可以支持所有 iPad。
要全面了解 iOS 设备,您可以查看 iOSSupportMatrix。
我刚刚尝试使用 "iOS Device App" 启动配置在我的 iPod Touch(2ng 代)上启动我使用 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 是我使用最多 "advanced" 的功能)。
这给我留下了以下问题:
- 我的应用的 iOS 版本要求是如何确定的?它是在某些配置文件中指定的(注释掉
Info.plist.xml
中的UIRequiredDeviceCapabilities
部分没有帮助)还是 RoboVM 分析我的代码并从那里弄清楚? - RoboVM 本身有最低版本要求吗?如果是这样,我能以某种方式调整它吗?
正如 Mario Zechner 在链接 post 中解释的那样,RoboVM 目前支持 iOS 7 及更高版本,也可以非正式地支持 iOS 6。
https://groups.google.com/d/msg/robovm/u6hk8kSFfuY/XEtQayXW6_sJ
经过更多的挖掘和测试,我现在想出了(我认为是)这个问题的几乎完整的答案。
快速免责声明:我仍在使用 RoboVM v1.5 和 Xcode v6.4,因为它们可以很好地满足我的需求,而且我坚信 "if it ain't broke, don't fix it".所以,这里的一些信息可能已经过时了。
有两个因素在起作用:对特定设备平台(ARMv6、ARMv7 等)的支持以及对特定版本 iOS 的支持。
RoboVM 很早就放弃了对 ARMv6 的编译器支持,因此除了使用旧安装的 RoboVM 编译应用程序版本之外,支持 ARMv6 设备的工作不多now-a-days。
iOS版本支持比较灵活:
自 v1.0 beta 4 起,RoboVM 的 Info.plist.xml
支持名为 MinimumOSVersion
的条目,例如:
<key>MinimumOSVersion</key>
<string>5.0</string>
此条目确定是否允许在设备上安装应用程序。如果您将其设置为高于设备 OS 版本并尝试在设备上执行该应用程序,您将在启动期间收到以下错误消息:
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 应用程序 OS版本设置为 4.1。该应用程序可以正常安装,但在启动时会立即崩溃,而 Eclipse 控制台没有任何调试日志。将 phone 升级回 iOS v6.1.6 后,应用程序 运行 正常。因此,即使在 ARMv7 设备上,RoboVM v1.5(和更高版本,我假设)不再支持 v4.1.1(可能更低)。
我还得到了 iPad 1 运行ning iOS v5.1.1,即 the latest available version of iOS for this device。将最低 OS 版本设置为 5.1.1,我的完整游戏应用程序可以安装并且 运行 在设备上运行良好。但是,当 RoboVM 尝试从 IDE 启动应用程序时,在设备上安装应用程序后启动失败并出现以下异常:
AppLauncher failed with an exception:
java.lang.RuntimeException: Launch failed: Unexpected response '' to command 'QListThreadsInStopReply'
at ...
我可以 运行 然后单击应用程序的图标,它可以正常工作,只是调试它(就像在 Eclipse 控制台中看到 System.out 一样)不起作用。
结论:
通过在Info.plist.xml
中将MinimumOSVersion
设置为5.1.1
,RoboVM v1.5搭配Xcodev6.4可以支持all iOS 具有 ARMv7 或更好处理器的设备,前提是它们 运行 iOS v5.1.1 或更好(iOS v5.1.1 适用于所有 ARMv7 或更好的设备) .
因此,此设置可以支持 所有 iOS 2009 年或之后发布的设备,仅排除前两个 iPhone(1 和 3G ) 和 iPod Touch(第一代和第二代)。从 iPhone 3GS 开始可以支持 iPhone,从第三代开始可以支持 iPod Touch,并且可以支持所有 iPad。
要全面了解 iOS 设备,您可以查看 iOSSupportMatrix。