zoukankan      html  css  js  c++  java
  • 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
    
    
  • 相关阅读:
    数据库练习
    数据库的设计范式知识
    asserts文件存到外部SD卡里
    用户的注册信息存储到文件里,登录成功后读出并显示出来
    java快速排序引起的StackOverflowError异常
    并发入库面临重复数据的问题
    《旅行青蛙》安卓版本修改钱和奖券
    ddmlib问题总结——同步获取设备信息
    Java ArrayList中对象的排序 (Comparable VS Comparator)
    Authentication(Spring Security 认证笔记)
  • 原文地址:https://www.cnblogs.com/sylvan/p/15314051.html
Copyright © 2011-2022 走看看