iOS 热修复之dylib

有关ios热修复的讨论有很多,尝试了原生动态库,JSPath,react native三种方式。这三种方式我都尝试了一下,确实适应场景各有不同。

先说下动态库方案吧,动态库方案无疑是最完美的方案。动态库无需编译至二进制文件中,可以在程序运行中再执行动态库中的代码。这样即可实现热更新。但是,苹果不允许动态下发可执行代码。所以这样加载动态库是被禁止的。然而,这个漏洞是在ios10才被苹果修复,所以ios10以下手机是可以利用此方案进行热更的。

下面说一下具体实现,先制作一个动态库dylib(也可用本人的https://github.com/duanran/plugDylib.git)。然后还需要一个宿主应用,在宿主应用中下载dylib至Document目录下,然后用dlopen打开动态库。然后就可以执行dylib里面的代码了。(宿主应用地址:https://github.com/duanran/DylibTest.git)


需要注意的是,动态库dylib签名一定要和你的宿主app一致,否则会报错。模拟器不验证签名,可以正常执行。

ios10以后苹果加强了权限管理,dlopen方法无法打开Doucument目录下的dylib了。至今还未找到如何绕开权限执行的方法。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值