iOS动态加载动态库方案简述
方案简述
- 制作动态库,mach-o type 为dynamic library,命名为a.framework。
- 上传压缩包a.framework.zip动态库至服务器,得到地址如:com.my.domain/my/resource…
- 配置接口,用于客户端获取framework最新版本,如 com.my.domain/my/api/vers…
- 客户端,framework何时下载并打开,根据优先级priority(optional, required),optional为当该功能使用时下载并打开;required为启动时下载并打开。
- 使用SSZipArchive解压a.framework.zip到 "沙盒/Library/dyload_frameworks/"。
- 使用dlopen打开a.framework。
- 使用功能时,如可关闭动态库,则使用dlclose关闭。
存在问题
- dlopen不能上架appstore,只能在在内测版本或者企业版app中应用。
- 在Release配置下,dlopen不能打开沙盒中的动态库,会得到错误“file system sandbox blocked mmap()”,暂时未能找到解决方法。