直接举个🌰
我们新建一个项目 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怎样管理所依赖的静态库/动态库的将在下一篇博客中进行解释,敬请期待。