【视频云端】iOS库冲突的问题---动态库导入

简介: 1.什么是库 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。

1.什么是库

首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。

什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间。

上面提到库在使用的时候需要 Link,Link 的方式有两种,静态和动态,于是便产生了静态库和动态库。

2.静态库和动态库的存在形式和区别。

2.1 静态库和动态库的存在形式

静态库:.a 和 .framework
动态库:.dylib 和 .framework

2.2 静态库和动态库的区别

静态库:静态库即静态链接库(Windows 下的 .lib,Linux 和 Mac 下的 .a)。之所以叫做静态,是因为静态库在编译的时候会被直接拷贝一份,复制到目标程序里,这段代码在目标程序里就不会再改变了。
静态库的好处很明显,编译完成之后,库文件实际上就没有作用了。目标程序没有外部依赖,直接就可以运行。当然其缺点也很明显,就是会使用目标程序的体积增大。

动态库:动态库即动态链接库(Windows 下的 .dll,Linux 下的 .so,Mac 下的 .dylib)。与静态库相反,动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。

动态库的优点是,不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用(因为这个原因,动态库也被称作共享库)。同时,编译时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。动态库带来的问题主要是,动态载入会带来一部分性能损失,使用动态库也会使得程序依赖于外部环境。如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行(Linux 下喜闻乐见的 lib not found 错误)。

注意:为避免冲突目前阿里视频云的端SDK都提供的是动态库

3.动态库导入

示例以短视频SDK导入为示例,其他播放器和连麦SDK可参考.
直接引入SDK的framework,名称为 AliyunVideoSDKPro

  1. 开发者打开工程,选中目标target,依次选择"Build Phases"->"Link Binary With Libraries",点击"+"号,点击“Add Other...”,导入AliyunVideoSDKPro.frameworkQuCore-ThirdParty.framework
  2. 开发者打开工程,选中目标target,依次选择"General"->"Embededed Binaries",点击"+"号,点击“Add Other...”,导入AliyunVideoSDKPro.frameworkQuCore-ThirdParty.framework
  3. 同时,还需依赖libz.tbdImageIO.frameworkCoreMedia.frameworkCoreVideo.frameworkVideoToolBox.frameworkMediaPlayer.frameworkOpenAL.frameworklibc++.tbd,libsqlit3.tbd,libiconv.tbd请一并加上。截图如下:

依赖库示例

  1. 配置 Build Setting -- Linking -- Other Linker Flags 添加 -ObjC选项
目录
相关文章
|
3月前
|
XML JSON API
IOS网络编程:介绍一下 Alamofire 库。
IOS网络编程:介绍一下 Alamofire 库。
37 3
|
5月前
|
视频直播 API iOS开发
微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题
功耗优化一直是 app 性能优化中让人头疼的问题,尤其是在直播这种用户观看时长特别久的场景。怎样能在不影响主体验的前提下,进一步优化微信iOS端视频号直播的功耗占用,本文给出了一个不太一样的答案。
87 0
|
9月前
|
JavaScript Android开发 iOS开发
layui框架实战案例(6):上传图片和视频自动调用IOS或安卓系统的摄像头功能
layui框架实战案例(6):上传图片和视频自动调用IOS或安卓系统的摄像头功能
226 0
|
9月前
|
前端开发 API Android开发
Android侧滑踩坑记(仿IOS侧滑finish页面基于Slidr库)
Android侧滑踩坑记(仿IOS侧滑finish页面基于Slidr库)
179 0
|
12月前
|
iOS开发
iOS MachineLearning 系列(6)—— 视频中的物体轨迹分析
轨迹分析是比物体追踪更上层的一种应用。Vision框架中提供了检测视频中多个物体的运动轨迹等能力,在健身,体育类应用中非常有用。
108 0
|
12月前
|
算法 API vr&ar
iOS MachineLearning 系列(5)—— 视频中的物体运动追踪
本系列的前面几篇文章中,我们将静态图片分析相关的API做了详尽的介绍。在Vision框架中,还提供了视频中物体追踪的能力。 仔细想来,其实视频的分析和静态图片的分析本质上并无太大的区别,我们可以将视频拆解成图片帧,之后再对图片进行静态分析。将所有图片帧的分析结果反馈到视频上,即实现了对视频的分析能力。 视频中物体运动的跟踪常在一些AR游戏中应用,这些现实增强类的应用常常需要实时追踪显示中的物体。
136 0
|
Web App开发 编解码 Android开发
iOS 视频转码处理
iOS 视频转码处理
|
开发工具 iOS开发 git
iOS 开发 - 亲身经历告诉你如何把自己的库通过pod导入(详细步骤)
iOS 开发 - 亲身经历告诉你如何把自己的库通过pod导入(详细步骤)
262 0
iOS 开发 - 亲身经历告诉你如何把自己的库通过pod导入(详细步骤)
|
编解码 iOS开发
iOS拍摄视频,压缩并上传服务器
iOS拍摄视频,压缩并上传服务器
392 0
|
程序员 iOS开发 开发者
iOS开发:Mac电脑Xcode里面添加导入真机调试包的步骤
在Xcode使用的过程中,有时候会因为一些系统原因或者是不想频繁升级电脑上的xcode版本而需要进行导入操作,尤其是苹果每次发布新系统之后,最让人头大的就是更新xcode来适用苹果最新的包内容,不然就会影响开发时候的测试以及上线。但是像博主这样比较懒的狗程序来说,真的不想每次苹果发布更新iOS系统之后就立马升级更新xcode,那么就用到了在现有版本的xcode里面导入最新的iOS系统真机调试包就可以了。
379 0
iOS开发:Mac电脑Xcode里面添加导入真机调试包的步骤