使用Xcodeproj修改依赖库顺序

Posted 兵临城下也

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Xcodeproj修改依赖库顺序相关的知识,希望对你有一定的参考价值。

基于某种特定的需求,需要动态的按照特定的顺序来对项目依赖的库进行排序,得知 Cocoapods 团队大佬已经开发了 Xcodeproj 来管理工程的配置,所以本次记录一下使用 Xcodeproj 来完成我的目的

具体的代码如下:

require 'xcodeproj'

def priorityDependencesFunction(dependencies)
    # 自定义依赖排序库(下面的排序优先级最高)
    priorityDependences = ["SDWebImage", "CocoaLumberjack",
        "HDBaseProject", "MJRefresh", "PINCache",
        "AFNetworking"]

    # 将工程所有依赖组件移除,并按照priorityDependences的顺序加入到deleteDependences中
    deleteDependences = []
    for dependencyName in priorityDependences do
        for dependency in dependencies do
            if dependencyName == dependency.name
                deleteDependences << dependency
                break
            end
        end
    end

    # dependencies删除deleteDependences的元素
    dependencies.delete_if  |dependency|
        deleteDependences.include?(dependency)
    

    # 将deleteDependences插入到最前面
    for deleteDependency in deleteDependences.reverse do
        dependencies.unshift(deleteDependency)
    end
end


def sortDependecies()
    puts "sortDependecies start"
    # 当前路径
    base_path = File.dirname(__FILE__)
    project_path = base_path + '/Pods/Pods.xcodeproj'
    pod_project = Xcodeproj::Project.open(project_path)
    pod_target = nil
    pod_project.targets.each_with_index do |target, index|
        if target.name  == "Pods-HDXcodeProjDemo"
            pod_target = target
        end
    end
    priorityDependencesFunction(pod_target.dependencies)
    pod_project.save
    puts "sortDependecies end"
end

sortDependecies()

执行步骤:

1、可以选择下载 测试工程 ,然后 pod install 安装,项目依赖库的顺序默认是按照字母排序

2、在项目路径下,执行 ruby dependency.rb ,实现自定义依赖库排序

3、最终效果

参考资料

Xcodeproj

利用xcodeproj给主工程添加子工程

以上是关于使用Xcodeproj修改依赖库顺序的主要内容,如果未能解决你的问题,请参考以下文章

静态库链接时的依赖关系和先后顺序

iOS 工程文件(.xcodeproj)无法打开

Xcode 错误:“无法保存 .xcodeproj”

你可以在 iOS 应用程序中使用 Package.swift 而不是使用 .xcodeproj 吗?

Android Gradle 插件Android 依赖管理 ① ( 依赖库匹配 | 依赖库查找顺序及路径 | Gradle 资源库 )

Android Gradle 插件Android 依赖管理 ① ( 依赖库匹配 | 依赖库查找顺序及路径 | Gradle 资源库 )