3

我想开始为 iOS 开发。来自 Android 开发背景,我知道您可以使用的设备类型越多,测试效果就越好,因为所有设备的规格都大相径庭,而在您的测试设备中可以完美运行的设备可能甚至无法运行另一个,别说好看了。

我知道在实际设备上进行测试非常重要,因为您可以在模拟器上测试的内容有很多限制,所以我决定购买一个实际设备。

但是,iOS 世界中也有大量可用的设备!有 iPod touch、iPad 和 iPhone,每个都有几个不同的世代和配置(8GB 版本与 16GB 版本、WiFi 版本、3G 版本等)。不仅是屏幕尺寸,而且不同设备的纵横比以及所包含的传感器也有很大不同。

我认为让应用程序在各种设备上运行应该不难,但是否有必要在您计划支持的所有设备类型上进行实际测试?苹果并不是以低价出名的,我希望尽可能降低起步成本。

因此,总结一下:是否有必要/建议在 iOS 开发世界中测试尽可能多的设备类型?

一个小的澄清:我特别询问是否可能存在与特定设备/设备系列相关的兼容性问题,我无法通过在模拟器上测试或完全不同的设备来捕获这些问题。

4

5 回答 5

3

一般来说,在模拟器上测试和在设备上测试在能力上的主要区别是:

  • 模拟器不使用与设备完全相同的沙盒。因此,例如,如果您的配置文件缺少您的 Passbook 凭据,则此问题将出现在物理设备上,但不会出现在模拟器上。
  • 该模拟器通常不支持 GPS、多点触控、推送通知、蓝牙和其他一些特定功能。
  • 在非视网膜显示器上,iPhone 5+ 或(尤其是!)视网膜 iPad 的模拟器视图在 100% 时几乎无法使用,因为它的尺寸将超过您的屏幕尺寸。
  • 有一些非常罕见的崩溃仅在模拟器上发生,少数仅在设备上发生。
  • 模拟器并不总是支持您的应用支持的最早的 iOS 版本。例如,当前版本的 Xcode(如果您想为最新的 iOS 版本构建,则必须使用它)只有 5.0+ 的模拟器可用。
  • 据我所知,使用 Instruments 进行的某些分析仅在模拟器中可用。

现在,在我的具体情况下,我尝试在我支持的每个屏幕分辨率和我支持的每个主要操作系统版本之一上进行测试。

这归结为以下一系列测试设备:

  • (480x320) iPhone 3GS 运行 4.3.3
  • (1136x640) 运行最新 6.x 的 iPod 5gen
  • (960x640) iPhone 4S 运行 6.0
  • (1024x768) iPad 第一代运行 5.0
  • (2048x1536) iPad 第 4 代运行最新的 6.x

请注意,iPad mini 的分辨率与第一代 iPad 相同。

(我的选择偏向于后来的 iOS 版本,因为我喜欢在它们推出时实现与所有 Apple 时髦的可选功能的集成。如果其中一个 6.x 设备运行 5.1,它可能会是一个更平衡的分类。)

如果您不需要支持 4.x,我个人建议不要这样做,因为 iTunes Connect 不再为其收集崩溃报告,模拟器也不再提供它。当然,只有你可以决定你是否真的需要,如果你这样做,把你的大量测试集中在那里,因为如果你使用的是 5.0 中才引入的 API,Xcode 不会警告你,这会使任何设备崩溃运行 4.x。

请注意,有一些方法可以(经过大量准备)降级设备上的 iOS 版本,因此,如果您真的想测试比您的设备更多的版本,您可以(付出很多努力)。但是,无论如何,您最好为此培养一个强大的 Beta 测试人员库。

于 2012-12-21T04:14:54.423 回答
2

虽然在所有可能的设备上进行测试显然很棒,但 iOS 生态系统比 Android紧密,因此您可以稍微缩小范围。

您可以从限制目标 iOS 版本开始。无论如何,这将淘汰一些旧设备。iOS6 在所有 iOS 设备中的份额现在可能在发布 4 个月后的 75% 左右;iOS5+iOS6 90% 以上。如果您刚刚开始为 iOS 开发,您可能只针对 iOS6。

这意味着您的最低硬件平台是 iPad2 / iphone3GS / ipodTouch4

设备总列表

iPad:   2 3 4 mini
iPhone: 3GS 4 4S 5
iPod:   4 5

十台设备。

但是您不需要全部测试它们。您可以明智地将其缩小到...

iPad:   mini + one of the retina models
iPhone: 3GS + 5

用于日常测试。

显然,如果您确实想更加向后兼容,只需将低端测试模型替换为低规格设备(iphone 3、iPad 1)。

存储容量的差异(例如 8GB 与 16GB)几乎无关紧要。

根据您的项目,您必须特别注意一些硬件功能。显而易见的一个是视网膜与非视网膜显示器。定位服务的硬件功能在不同型号之间特别细微。

Lowendmac 有一个非常全面的iphone 比较图表...

于 2012-12-21T03:50:58.717 回答
2

我认为让应用程序在各种设备上运行应该不难,但是否有必要在您计划支持的所有设备类型上进行实际测试?

这在很大程度上取决于您打算构建什么样的应用程序。例如,通用应用程序可以在小屏幕和大屏幕设备上运行,但在每个设备上的呈现方式可能不同,因此您希望能够同时尝试这两种设备。许多应用程序专门针对 iPad,因此显然没有必要在小型设备上进行测试。iPod Touch 和 iPhone 非常相似,因此在其中一个上进行测试通常就足够了。

简而言之,您不必拥有每台设备的每一个版本,也不必对曾经发布的每一个 iOS 版本进行测试。但是您确实希望在尽可能多的不同设备和操作系统版本上测试您的产品。因此,培养一批 Beta 测试人员,他们将通过在他们的设备上试用您的应用程序来帮助您。iOS 开发者计划允许您精确地向您的帐户添加多达 100 台测试设备,以便您可以在许多不同的环境中测试您的应用程序。

于 2012-12-21T03:58:00.113 回答
1

在 iPod touch 上进行测试通常不值得。

在 iOS 世界中,一般有 iPhone/iPod、iPhone 5/iPod 5 代和 iPad。

因此,总共有 3 个屏幕尺寸。

如果您计划针对的不仅仅是最新的操作系统(iOS 6),那就是测试的复杂性所在。只需针对 iOS 5,iOS 6 几乎会使您需要测试的目标数量增加一倍。

我尽量保持简单。我在我的 iPhone 5 和 iPad 上进行测试。两者都运行 iOS 6。对于 iOS 5 和小型 iPhone,我依赖于模拟器。

于 2012-12-21T03:47:04.167 回答
0

我为 Android 和 iOS 开发,所以我知道这个问题是从哪里来的。我有幸能够在大多数不同的 iOS 设备上进行开发,我想说在大多数情况下,我会在用户将使用的最不先进的设备上进行测试。如果它在 iPOd 3rd gen 上运行流畅,那么它将在 iPhone 4S、5 等上运行非常流畅。对于 iPhone 5 的不同屏幕高度,模拟器在布局时效果非常好。

您需要考虑的事情是,您的应用程序是否可以选择使用只有手机才有的某些功能,例如拨打电话。此外,如果您想制作 iPad 或通用应用程序,拥有一台真正的 iPad 会非常方便,但模拟器确实工作得很好。

于 2012-12-21T03:41:48.670 回答