有时候会碰到这样的情况,一个以二进制形式分发的 Pod,需要区分 Debug 与 Release 环境,比如 Debug 不加密、Release 加密。 在上家公司,遇到这种情况会做两个静态库,一个叫 xxx.a,另一个叫 xxx_dev.a。开发或者测试的时候手动切换。
其实,CocoaPods 本身有更好的解决方法。
假设要做一个叫 Foo 的 pod,以 Framework 的形式分发,可以写两个 Podspec 文件:
# FooDebug.podspec
Pod::Spec.new do |s|
s.name = 'FooDebug'
s.ios.vendored_frameworks = 'Debug/Foo.framework'
# ...
end
# FooRelease.podspec
Pod::Spec.new do |s|
s.name = 'FooRelease'
s.ios.vendored_frameworks = 'Release/Foo.framework'
# ...
end
两个不同名字的 Pod,但是 framework 的名字是一样的,分别在 Debug 与 Release 目录下。
在主工程 Bar 的 Podfile 里,这样写:
pod 'FooDebug', :git => 'https://xxx/xxx/foo.git', :configurations => ['Debug']
pod 'FooRelease', :git => 'https://xxx/xxx/foo.git', :configurations => ['Release']
这样,在 Debug 与 Release 下,会分别引用 FooDebug 与 FooRelease 了。
同时,由于 framework 的名字是相同的,所以在代码里引入头文件时诸如 #include <Foo/Foo.h>
这样的写法不受影响。