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];}

你可能感兴趣的:(CocoaPods的资源管理)