为什么开发设备比典型设备能为您提供更多资源?


9

我创建了一个可以在我的第四代iPod Touch和我公司的第五代iPod touch上运行的应用程序。

当我们发现任何非开发者设备运行该应用程序*后发生崩溃时,我们将要发布。

提出了一个想法,即注册为“开发者设备”的设备可为您的应用提供更多使用资源。这对我来说似乎不对,因为我无法想到会存在的任何原因-我觉得这很可能与构建或配置概要分析有关。

但是,这引发了讨论。为什么首先存在诸如游戏机开发套件之类的设备,这些设备的功能要比目标平台强?当然,对程序进行压力测试是很好的,但是更准确地表示目标平台会更有意义吗?

TL; DR-为什么开发套件比目标平台拥有更多的资源?

*非第三代以上的非开发者设备。从我们的服务器(而不是直接从安装了app&xcode的计算机)下载应用程序的iOS设备。

请注意,还有另一个问题看起来很相似,但实际上却有所不同,因为另一个问题是关于模拟器的,我知道使用模拟器和实际设备之间存在巨大差异。


7
@gnat-这篇文章与为什么需要测试我的iPhone应用程序并不重复。我知道使用模拟器和实际设备之间存在巨大差异……
Katamaritaco

Answers:


8

开发环境(对于任何事物-无论是独立的Java应用程序,移动环境还是嵌入式设备)通常都具有执行远程调试,增强的日志记录和环境的其他类型自省的能力(通常不希望这样做)在生产嵌入式设备上添加逻辑分析仪的所有挂钩)。

这些额外的东西需要额外的资源。针对vm或其他远程环境打开远程调试器会占用另一端的资源。在严格受限的移动领域中,这些额外的资源可能会使它超出授予标准应用程序的限制。因此,将更多资源分配给开发环境,以使其在开始进行其他日志记录或调试时不会超出资源限制。

这进一步说明您始终需要在生产环境的镜像中进行测试。依靠它的所有调整和不同的变量来相信它可以在开发人员的机器上工作还不足以验证它在生产中是否可以正常工作。


1
是的,质量检查始终需要在最终用户环境而不是开发环境中进行测试。

几年前,我参与了一个项目,该项目必须开发两个完全不同的CPU板。负责开发该板的硬件工程师在我的工作中投入了大量的测试连接器,为调试阶段购买了保险,以确保我们可以探测任何东西。他因为浪费房地产和金钱而花了很多时间。另一个人没有浪费任何这样的钱和房地产。有趣的是:我们从来不需要板上的连接器。据报道,整合另一块板子绝对是一场噩梦,因为没有问题。认为“保险”。
约翰·R·斯特罗姆

@ JohnR.Strohm对于开发人员而言,探测是好的。我要说的是,如果设计它的生产板不同于开发板,那么在开发板成功之后,还需要对生产板进行一次测试(并在必要时进行测试)。

对于典型的“开发工具包”来说,这很有意义。出于好奇,在iOS中,任何iDevice都可以用作“开发者设备”。两块相同的硬件怎么会有区别?
Katamaritaco

1
@Katamaritaco仅仅是因为它是同一物理设备,并不表示该应用程序在iOS中具有相同的权限。执行诸如远程调试之类的功能可能会更改应用程序可以访问的资源。

5

它允许您创建资源贪婪的概念证明,以后可以对其进行优化。

崩溃使应用程序崩溃毫无意义,因为它超出了内存限制5个字节(可以通过设置优化器以节省发行版中的空间来解决,但您正在运行调试版本),

当您超过使用者限制时,日志中会弹出警告,而此处的测试会很好。


1

部分原因是“信任”。假定开发人员知道他们在做什么,因此可以不受限制地访问设备及其所有资源。对于未使用的资源被浪费掉的小公司和开发团队来说,这可能是一个很大的帮助。

在较大的公司环境中,尤其是在普通公众中,由于安全方面的考虑以及需要与其他也需要资源的应用程序良好交互的需求,这种访问成为一种责任。

这不是一个真正的新主意。我有两台机器在工作。在我的开发人员计算机上,我具有管理访问权限,但它与Internet隔离。我用于电子邮件,Office和Internet访问的另一台机器甚至无法安装程序。

这就是为什么在部署应用程序之前必须在非开发人员设备上对其进行测试,以确保其行为良好的原因。:)


0

借助iOS,启用了开发功能的设备可让您直接运行调试版本(其中可能包含与发布版本不同的一组编译器错误),以及在调试内核下运行应用程序,这可能会巧妙地更改线程计时和内存使用情况,它也可以显示/隐藏各种线程和泄漏的内存错误。

没有调试功能,开发设备将不会有太多用处,而具有调试功能的用户设备将带来(更多)严重的应用程序和应用程序数据安全性问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.