首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么苹果只允许在iOS上使用静态框架?

为什么苹果只允许在iOS上使用静态框架?
EN

Software Engineering用户
提问于 2014-01-31 21:17:37
回答 2查看 6.4K关注 0票数 12

显然,苹果有能力为iOS创建动态加载的库(称为框架),因为它们附带了XCode (如UIKit)中的几个库。应用程序开发人员只有创建静态库的能力,或者充其量只能欺骗Xcode,让他们认为当它实际加载静态库时,它正在加载一个框架,这被称为创建一个假框架,一些拖放方便,但是动态加载没有任何好处。

苹果对应用程序开发人员保持动态框架的理由是什么?这似乎可以大大简化外部库的使用,因为开发人员不必依赖挑剔的链接器标志或开源库依赖链。

我看到一个共同的原因是安全。那么为什么苹果允许它在OSX上而不是iOS上呢?安全性不也是必需的吗?

编辑:这已不再适用于iOS 8,苹果增加了对动态框架的支持。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2014-01-31 21:30:05

苹果接受程序的标准之一是它是否调用不支持的Apple (或其他坏东西)。通过要求静态链接,他们可以证明软件没有进行这样的调用。允许动态链接将允许以后添加任何类型的行为,这几乎使它们的审批过程无效。

Apple允许OSX中的动态链接,因为Macintoshes是真正的计算机,而不是平板设备,而真正的计算机用户希望它们能够以这种方式编程。平板电脑和手机的市场与台式机和笔记本电脑的市场大不相同。计算机是生产设备;用户希望能够在其上生产产品,包括编写能做他们想做的、想做的事情的程序。这从来都不是平板电脑的期望,平板电脑是消费设备。

平板电脑和苹果商店的全部目的是创造一个封闭的环境,以保护消费者免受普通病毒等的侵害(好吧,并允许苹果收集30%的通过商店销售的软件)。

票数 17
EN

Software Engineering用户

发布于 2014-01-31 21:28:48

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

原因在于安全性:因为动态库可以在运行时加载和卸载,所以您可以下载额外的可执行代码并加载它(比如插件)。这可能会被黑客破坏,然后在你的手机上执行恶意代码是一件非常糟糕的事情。这也将使它可以添加未经批准的功能到一个批准的应用程序。简而言之:在这种环境下,苹果认为动态链接是一个必须严格控制的潘多拉盒子,否则它可能会危及安全,我同意这在手机上是有意义的。

票数 8
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/226313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档