为什么Apple只允许iOS上使用静态框架?


11

显然,Apple可以为iOS创建动态加载的库(称为框架),因为它们带有XCode(例如UIKit)。应用开发人员只能创建静态库,或者充其量只能诱使Xcode在实际加载静态库时认为它正在加载框架,这被称为创建假框架,某些拖放方便,但没有任何动态加载优势。

Apple拒绝应用程序开发人员使用动态框架的原因是什么?似乎相当容易使用外部库,因为开发人员不必依赖挑剔的链接器标志或开源库依赖链。

我看到一个常见的原因是安全性。那么,为什么Apple允许OSX而不是iOS允许它?那里的安全性不是吗?

编辑:自iOS 8起,这不再相关。Apple已添加对动态框架的支持。

Answers:


17

Apple接受程序的标准之一是它是否调用不受支持的Apple API(或其他不良内容)。通过要求静态链接,他们可以证明软件不会进行此类调用。允许动态链接将允许以后添加任何行为,这几乎使他们的批准过程无效。

Apple允许OSX中的动态链接,因为Macintosh是真正的计算机,而不是平板设备,并且真正计算机的用户希望它们可以这种方式进行编程。平板电脑和手机市场与台式机和笔记本电脑市场大不相同。计算机是生产设备;用户期望能够在其上生产产品,包括编写可以满足其需求,满足其需求的程序。平板电脑设备(消费设备)从未有过这样的期望

平板电脑和Apple Store的全部目的是创建一个封闭的环境,以保护消费者免受行人病毒等(当然,并允许Apple收取通过其商店销售的所有软件的30%)。


7
注:苹果公司现在允许iOS上的动态框架的的iOS 8
乔尔·菲舍尔

@Robert Harvey感谢您的解释,但是从iOS 8开始,它们可以使用动态框架。它会允许黑客影响iOS / App吗?您是否有任何想法,苹果公司如何使动态框架向开发人员开放,但却阻止了黑客的使用。谢谢!
Vijay-Apple-Dev.blogspot.com's

8

原因是此堆栈溢出问题中提到的安全性:

原因是安全性:由于可以在运行时加载和卸载动态库,因此您可以下载其他可执行代码并进行加载(请考虑使用插件)。这可能会被黑客攻破,然后在手机上执行恶意代码是一件非常糟糕的事情。还可以将未经批准的功能添加到批准的应用程序。简而言之:在这种环境下,Apple认为动态链接是必须严格控制的Pandoras盒子,否则可能会损害安全性,我同意在电话上确实有意义。

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.