podfile 依赖同一个库的多种情况

直接举个
我们新建一个项目 TestProject,该项目需要依赖AFNetworking和一个第三方库AFramework,不巧的是AFramework也依赖了AFNetworking,更不巧的是AFramework指定了所依赖的AFNetworking的版本号为3.1.0,这个时候pod会怎样来管理AFNetworking呢?具体分为以下几种情况:

1.我们指定TestProject中依赖的AFNetworking的版本号为3.2.1,执行pod install命令

Analyzing dependencies
[!] Unable to satisfy the following requirements:

- `AFNetworking (~> 3.2.1)` required by `Podfile`
- `AFNetworking (= 3.1.0)` required by `AFramework (0.1.5)`

结果如上所示,因为两者版本号不一致,那么就会产生矛盾

2.我们指定TestProject中依赖的AFNetworking的版本号为3.2.1,先install AFramework然后在执行Podfile的AFNetworking install

Analyzing dependencies
[!] Unable to satisfy the following requirements:

- `AFNetworking (~> 3.2.1)` required by `Podfile`
- `AFNetworking (= 3.1.0)` required by `Podfile.lock`

Specs satisfying the `AFNetworking (~> 3.2.1), AFNetworking (= 3.1.0)` dependency were found, but they required a higher minimum deployment target.

也会因为版本号不一致产生矛盾

3.在TestProject的podfile中不指定AFNetworking版本,那么会按照AFramework中指定的版本去加载

localhost: TestProject sunqy$ pod install
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (3.1.0)

正常install

这个告诫我们,假如我们自己写一个依赖库的话,在该依赖库的podspec中声明依赖时,应避免指定版本号,因为这样很容易造成上述依赖版本不一致导致pod无法管理的情况出现。例如下面就是一种错误的示范:

pod.png

另外,pod怎样管理所依赖的静态库/动态库的将在下一篇博客中进行解释,敬请期待。

你可能感兴趣的:(podfile 依赖同一个库的多种情况)