CocoaPods依赖重复编译:如何让Dependency(A)仅编译一次?
解决Dependency(A)重复编译问题的方案
统一版本约束
在Podfile里明确指定Dependency(A)的版本,保证主项目和其他依赖它的Pod版本要求完全一致。比如:pod 'Dependency(A)', '~> 1.0.0'版本统一后,CocoaPods会自动合并依赖,避免因版本分歧导致重复编译。
强制静态集成依赖Pod
如果依赖A的Pod默认用动态库方式引入,可以通过post_install钩子修改它的配置,强制静态集成:post_install do |installer| installer.pods_project.targets.each do |target| if target.name == "你的依赖Pod名称" target.static_framework = true target.build_configurations.each do |config| config.build_settings['OTHER_LDFLAGS'] << '-ObjC' end end end end静态集成的Pod会和Dependency(A)合并符号,不会触发重复编译。
切换为静态库集成方式
直接在Podfile开头设置静态框架模式:use_frameworks! :linkage => :static这样所有Pod都会以静态库形式集成,Dependency(A)只会被编译一次,最终合并到主项目二进制中。
移除冗余直接依赖
检查主项目是否真的需要直接引入Dependency(A)。如果其他Pod已经包含了符合版本要求的A,直接删掉主项目里对A的依赖声明,通过间接依赖引入即可,CocoaPods会自动处理为单次编译。
内容的提问来源于stack exchange,提问作者ABDUL BASIT
相关产品推荐
相关产品推荐

