CocoaPods的资源管理

转自:https://juejin.cn/post/6844904002119811086

无论任何场景,禁止 使用 podspecName/assers/*/形式引入资源文件,存在严重的资源重复引入问题,会显著增加包体大小!无法享有任何 Xcode的优化.

使用 resources:


s.resources = ['ResourcesTest/Assets/*.xcassets',

'ResourcesTest/Assets/*.bundle' ]

使用 resource_bundles:


s.resource_bundles = {'ResourcesBubdlesTest'=> ['ResourcesBubdlesTest/Assets/*.xcassets'],'BlankLoading1'=> ['ResourcesBubdlesTest/Assets/BlankLoading.bundle'] }

不使用use_framework!

当不使用use_framework!时,最终对Pod库,会创建单独的静态链接库.a的Target,然后CocoaPods会对主工程App Target增加自己写的脚本来帮助我们拷贝Pod的资源。

resources里.xcassets资源会拷贝进入主目录Assets.car,.bundle文件放入主目录下!

resource_bundles文件.xcassets会放入命名空间.bundle下的Assets.car,.bundle放入主目录下的命名空间.bundle

使用use_framework!

当使用了use_framework!之后,CocoaPods会对每个Pod单独建立一个动态链接库的Target,每个Pod最后会直接以Framework集成到App中。而资源方面,由于Framework本身就能承载资源,所有的资源都会被拷贝到Framework文件夹中而不再使用单独的脚本处理。

资源文件取用方法:

无论是不是使用 use_framework ,对于私有库的image文件我们都是可以通过下面方法调用:

bundle寻址也一样


UIImage*ModuleImage(NSString*imageName) {NSBundle*bundle = [NSBundlebundleForClass:[ResourcesBubdlesTestclass]];return[UIImageimageNamed:imageName inBundle:bundle compatibleWithTraitCollection:nil];}NSBundle*BundleWithName(NSString*bundleName) {NSBundle*bundle = [NSBundlebundleForClass:[XHXRecordToolsclass]];NSURL*url = [bundle URLForResource:bundleName withExtension:@"bundle"];return[NSBundlebundleWithURL:url];}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • resource_bundles resource_bundles显式地做了 bundle 层面的分组上面的写法意...
    zh_19阅读 982评论 0 0
  • CocoaPods中管理图片资源 CocoaPods在.podspec文件中描述资源的字段有两个,resource...
    tom555cat阅读 2,899评论 1 2
  • 在组件化前期的工作中,我们会面临如何管理图片、音视频等资源的问题。我们需要关注的问题是如何将相应的资源和组件一起打...
    ty_Chen阅读 2,235评论 0 2
  • 安装包组成: 谈到 App 瘦身,最直接的想法莫过于分析一个安装包内部结构,了解其每一部分的来源。解压一个 ipa...
    孔雨露阅读 3,460评论 1 7
  • 给 Pod 添加资源文件 注:本文假定读者对 CocoaPods 的使用已经相当熟练,创建过 Pod 或有此打算。...
    枫叶1234阅读 898评论 0 0