podspec中的资源文件
iOS开发中使用cocoapod做依赖管理, 我们自己很多组件也使用cocoapod私有库进行管理. 在私有库的开发中, 总是会面临私有库的资源引用的问题.
目前podspec的指引中有如下几种添加资源的方式:
- resources
- resource_bundles
cocoapod中的方法
一般有如下两种使用方法:
# 直接使用 resource 和 resources
# 直接会将
spec.resource = 'Resources/HockeySDK.bundle'
spec.resources = ['Images/*.png', 'Sounds/*']
官方文档注释是: A list of resources that should be copied into the target bundle
, 表示这些资源文件在build
时会被直接拷贝到 client target
的 mainBundle
里.
# 生成单个bundle -> MapBox.bundle
spec.ios.resource_bundle = { 'MapBox' => 'MapView/Map/Resources/*.png' }
# 生成多个bundle -> MapBox.bundle, MapBoxOtherResources.bundle
spec.resource_bundles = {
'MapBox' => ['MapView/Map/Resources/*.png'],
'MapBoxOtherResources' => ['MapView/Map/OtherResources/*.png']
}
使用这个方法就能自己定义bundle的名称以及内部封装的资源. 使用是 'bundle名字' => ['资源路径']
推荐方法:
s.resource = ['BFTestSDK/Assets/**/*.bundle']
s.resource = ['BFTestSDK/Assets/images/*.png']
s.resource_bundles = {
'BFTestSDK_png' => ['BFTestSDK/Assets/images/*.png'],
'BFTestSDK_voice' => ['BFTestSDK/Assets/voices/*.mp3']
}
第一种, 直接使用自己封装好的bundle
第二种, 会封装成两个bundle -> BFTestSDK_png.bundle
和 BFTestSDK_voice.bundle
注意如果使用静态库, 并且使用pod package BFTestSDK.podspec
进行打包(默认打出来的是静态库), 打包出来的资源文件在BFTestSDK.framework/Resource
目录下, 如果我们要使用, 记得把bundle资源剪切出来.
参考
https://mp.weixin.qq.com/s?__biz=MzA5NzMwODI0MA==&mid=2647759665&idx=1&sn=4b1f2fde434f1b45ff3eac627a7b7fd9
https://blog.csdn.net/TuGeLe/article/details/85049392
http://blog.xianqu.org/2015/08/pod-resources/
https://guides.cocoapods.org/syntax/podspec.html#resources