CocoaPods的资源管理

作者: ssjk4 | 来源:发表于2021-11-18 16:50 被阅读0次

    转自: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的资源管理

        本文链接:https://www.haomeiwen.com/subject/mmchtrtx.html