为什么 iOS 默许 Lua/JS 等脚本动态更新,却限制使用动态链接库?

2014-08-05 11:27:07 +08:00
 dogfeet
现在iOS的手游已经把脚本给玩出花了。有些开发商的产品下载下来就是一个几M的基础库和加载器。第一次安装还需要下载脚本与资源才能进行游戏。App Store对这种方式都允许上架,限制使用动态链接库出于什么原因?
10635 次点击
所在节点    编程
4 条回复
dorentus
2014-08-05 11:38:09 +08:00
Lua/Javascript 的 JIT 是被禁止的。那个“禁止动态执行代码”的限制只是想禁止动态在 CPU 上面执行机器代码而已。

不让用自己的动态链接库的限制纯粹是技术原因吧,目前 beta 版里面,用了 Swift 的话,libswift.dylib 是被打包在 app bundle 里面的;但是不管是不是动态链接,因为沙盒的存在,每个应用还是自己用自己的,影响不到其它应用。
dorentus
2014-08-05 11:46:09 +08:00
@dorentus
简言之:
1) 开放动态在 CPU 上面执行机器代码的权限之后,应用理论上可以通过这个来绕过沙盒,于是就禁了。
2) 动态链接库,因为沙盒的存在,起不到共享的作用;怕麻烦,于是就禁了。
dogfeet
2014-08-05 12:20:50 +08:00
@dorentus 是啊,因为起不到共享的作用,实际上还是安全的。但是不禁的话应用自更新起来就非常方便了。很多时候去用脚本只是为了动态更新,感觉产生了一个很病态的需求。
middleware
2014-11-20 12:41:10 +08:00
不允许动态库和技术没有什么关系。主要还是生态圈的问题。

Apple 不希望有第三方厂商发布在 iOS 上用的重量级 SDK(比如像 Qt 之类的)。当然你要开发也可以,但是没有动态库支持发布大型 SDK 会有很多问题,比如 symbol conflict 之类的。总之不是 blocking issue 但是算个 barrier。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/126180

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX