podspec中的引用资源文件

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 targetmainBundle 里.

# 生成单个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.bundleBFTestSDK_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

你可能感兴趣的:(podspec中的引用资源文件)