iOS动态加载动态库方案简述

1,226 阅读1分钟

方案简述

  1. 制作动态库,mach-o type 为dynamic library,命名为a.framework。
  2. 上传压缩包a.framework.zip动态库至服务器,得到地址如:com.my.domain/my/resource…
  3. 配置接口,用于客户端获取framework最新版本,如 com.my.domain/my/api/vers…
  4. 客户端,framework何时下载并打开,根据优先级priority(optional, required),optional为当该功能使用时下载并打开;required为启动时下载并打开。
  5. 使用SSZipArchive解压a.framework.zip到 "沙盒/Library/dyload_frameworks/"。
  6. 使用dlopen打开a.framework。
  7. 使用功能时,如可关闭动态库,则使用dlclose关闭。

存在问题

  1. dlopen不能上架appstore,只能在在内测版本或者企业版app中应用。
  2. 在Release配置下,dlopen不能打开沙盒中的动态库,会得到错误“file system sandbox blocked mmap()”,暂时未能找到解决方法。