V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dogfeet
V2EX  ›  编程

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

  •  
  •   dogfeet · 2014-08-05 11:27:07 +08:00 · 10342 次点击
    这是一个创建于 3523 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在iOS的手游已经把脚本给玩出花了。有些开发商的产品下载下来就是一个几M的基础库和加载器。第一次安装还需要下载脚本与资源才能进行游戏。App Store对这种方式都允许上架,限制使用动态链接库出于什么原因?
    4 条回复    2014-11-20 12:41:10 +08:00
    dorentus
        1
    dorentus  
       2014-08-05 11:38:09 +08:00   ❤️ 1
    Lua/Javascript 的 JIT 是被禁止的。那个“禁止动态执行代码”的限制只是想禁止动态在 CPU 上面执行机器代码而已。

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

    Apple 不希望有第三方厂商发布在 iOS 上用的重量级 SDK(比如像 Qt 之类的)。当然你要开发也可以,但是没有动态库支持发布大型 SDK 会有很多问题,比如 symbol conflict 之类的。总之不是 blocking issue 但是算个 barrier。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3297 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:50 · PVG 21:50 · LAX 06:50 · JFK 09:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.