• iOS——xcodeproj脚本


    Ruby脚本设置Xcode

    xcodeproj脚本常用操作:

    require 'xcodeproj'
    
    # 移除Group下所有
    def removeBuildPhaseFilesRecursively(aTarget, aGroup)
        aGroup.files.each do |file|
            if file.real_path.to_s.end_with?(".m", ".mm", ".cpp") then
                aTarget.source_build_phase.remove_file_reference(file)
            elsif file.real_path.to_s.end_with?(".plist") then
                aTarget.resources_build_phase.remove_file_reference(file)
            end
        end
    
        aGroup.groups.each do |group|
            removeBuildPhaseFilesRecursively(aTarget, group)
        end
    end
    
    # 添加文件
    def addfiles (direc, current_group, main_target)
        Dir.glob(direc) do |item|
            next if item == '.' or item == '.DS_Store'
    
                    if File.directory?(item)
                new_folder = File.basename(item)
                created_group = current_group.new_group(new_folder)
                addfiles("#{item}/*", created_group, main_target)
            else 
                i = current_group.new_file(item)
                if item.include? ".m" or item.include? ".mm" or item.include? ".swift"
                    main_target.add_file_references([i])
                end
            end
        end
    end
    
    # 设置build setting
    def buildset(project)
        # 遍历配置
        project.targets[0].build_configurations.each do |config|
            puts config.name   # Debug / Release
            #获得build settings
            build_settings = config.build_settings
            #build_settings是一个哈希,里面是一个个配置
            # build_settings.each do |key,value|
            #     # print key, " == ", value, "
    "
            #     # 可在这里进行设置证书等操作,常用的如下:
            # end
    
            build_settings["ENABLE_BITCODE"] = "NO"                 # 快手广告取消设置bitcode
    
        end
    end
    
    # 脚本入口
    path = File.join(File.dirname(__FILE__), "./Unity-iPhone.xcodeproj")
    project = Xcodeproj::Project.open(path)
    
    project.targets.each do |target|
        puts target.name
    end
    
    # 获取以项目命名的Target
    target = project.targets.first
    
    unityClassGroup = project.main_group.find_subpath(File.join('Classes'), true)
    
    unityClassGroup.set_source_tree('SOURCE_ROOT')
    
    # if !unityClassGroup.empty? then
    #     removeBuildPhaseFilesRecursively(target, unityClassGroup)
    #     unityClassGroup.clear()
    # end
    
    # 要复制的文件夹
    filesDic = '/Users/UserName/Desktop/ExampleFolder'
    
    addfiles("#{filesDic}/*", unityClassGroup, target)
    
    buildset(project)
    
    project.save
    
    

    执行脚本:

    
    ruby xcodeproj.rb
    
    
  • 相关阅读:
    disconf使用小结
    关于spring aop Advisor排序问题
    关于tomcat WEB-INF/lib下类加载顺序
    Netty5客户端源码解析
    巧用命令行工具 redis-cli
    redis学习总结
    聊聊Redis的持久化
    Git管理代码
    RabbitMQ连接池、生产者、消费者实例
    java处理节假日和工作时间的工具类
  • 原文地址:https://www.cnblogs.com/sylvan/p/15314051.html
Copyright © 2020-2023  润新知