相信基本上所有的iOS开发同学针对于CocoaPods都不陌生。即便没有用过,也是久闻大名如雷贯耳。作为Objective-C和Swift中非常流行的依赖管理工具,它拥有超过10000个公有程序库,通过一份Podfile文件和pod install
命令就能帮助开发者方便的管理工程依赖。
随着组件化越来越火热,大家都开始介入研究。组件化就免不了通过CocoaPods创建自己的私有代码库。而针对于一些业务模块,不光有代码,还有一些其他的资源,如图片、音视频等等。那么,下面就介绍一下如何给Pod库添加资源文件。
在CocoaPods中,官方提供了两汇总资源文件的引用方式——resource
和resource_bundles
。
添加资源文件的字段
resources
官方解释:一系列待复制到目标工程中的资源文件。
使用方法:
指定一个bundle为资源文件
spec.resource = 'Resources/HockeySDK.bundle'
指定多个目录下的不同文件为资源文件
spec.resources = ['Images/*.png', 'Sounds/*']
(注意一个和多个的区别,多个在属性resource
后面加s
)
官方提示:如果构建静态库Pod时,强烈推荐使用resource_bundles
来指定资源包,因为可以避免名称冲突。
resource_bundles
官方解释:允许定义当前Pod库的资源包的名称和文件。使用了hash,其中key表示包的名称,value是对应应包含的文件。key的命名至少应该包含Pod的名称,以最大限度的减少命名冲突的可能性。
使用方法:
指定一个目录下的所有png图片为一个资源包
spec.ios.resource_bundle = { 'MapBox' => 'MapView/Map/Resources/*.png' }
指定多个资源包
spec.resource_bundles = {
'MapBox' => ['MapView/Map/Resources/*.png'],
'OtherResources' => ['MapView/Map/OtherResources/*.png']
}
(注意一个和多个的区别,多个在属性resource_bundle
后面加s
)
接下来我们来测试一下,为什么resource会容易产生命名冲突。
通过resources、resource_bundles直接管理资源文件
创建一个私有pod,里面分别resource和resource_bundles字段。
Pod::Spec.new do |s|
s.name =