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, "\n"
        #     # 可在这里进行设置证书等操作,常用的如下:
        # 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

posted @ 2021-09-20 12:12  SylvanYan  阅读(322)  评论(0编辑  收藏  举报
TOP