-
Notifications
You must be signed in to change notification settings - Fork 146
dylib
Franken Zeng edited this page Mar 29, 2017
·
26 revisions
直播SDK静态库位于framework/live/目录下 直播SDK动态库位于framework/live_dy/目录下
名称 | 库名称 | 库size | ipa size | iOS要求 |
---|---|---|---|---|
直播SDK静态库 | KSYMediaPlayer.framework | 57M | 2.9M | 7.0及以上 |
直播SDK动态库 | KSYMediaPlayer.framework | 40M | 3.5M | 8.0及以上 |
- 静态库体积更小,直播SDK对ipa的影响只有2.9M
- 静态库iOS版本要求更低,只需要iOS 7.0。
- 动态库能解决ffmpeg冲突问题。
- 静态库有依赖库,而动态库没有。静态库依赖以下第三方库:
- libz.tbd
- libstdc++.6.tbd
- 动态的framework位于framework/live_dy文件夹中,编译前需要修改Build Settings->Framework Search Paths为正确的路径
- 运行前Build Phases->Embed Frameworks选项中需要添加相应的framework,
如果未进行以上配置,运行时将会出现如下错误
dyld: Library not loaded: @rpath/...
Referenced from: ...
Reason: image not found
为了能够顺利提交app至app store, 需要移除动态库中的x86_64和i386平台,具体操作如下:
进入KSYMediaPlayer.framework目录,执行命令:
- lipo KSYMediaPlayer -remove x86_64 -output KSYMediaPlayer
- lipo KSYMediaPlayer -remove i386 -output KSYMediaPlayer
执行完成后可使用lipo -info KSYMediaPlayer命令确认当前的动态库已经移除上面两个平台
如果不执行上述操作,那么在提交app store的时候,可能会出现ITMS-90087, ITMS-90209, ITMS-90125错误。
从v1.8.1版本开始,我们已经在动态库中为您移除了i386和x86_64两个平台
如果需要以上两个平台的动态库,请您移步https://github.com/ksvc/KSYLive_iOS
下载工程后,进入releaseFramework文件夹,执行脚本
./release-libKSYLive.sh KSYMediaPlayer lite[或vod] dy
运行完成后,即可在../framework/dynamic文件夹中看到KSYMediaPlayer.framework,其中包含了arm64、armv7、armi386、armx86_64四个平台。
如果app的Deployment Target是7.0,需要使用动态库时需要把Deployment Target升级到8.0。如果仍然需要维持APP的最低iOS版本7.0,需要做一些额外工作:
- 使用Weakly Linked
- 使用objc_getClass来找到对应的Class后进行调用
该方案只能发行越狱版本,提交APPStore后将导致iOS 7.x 版本加载crash。