ruby操作项目.xcodeproj

栏目: Ruby · 发布时间: 5年前

内容简介:开发过程中经常遇到需要脚本拷贝文件,添加文件引用到Xcode,新建group,添加文件到Build Phase以及增加-fno-objc-arc标识等,这些都可以通过脚本实现。1.查找*.xcodeproj并打开

开发过程中经常遇到需要脚本拷贝文件,添加文件引用到Xcode,新建group,添加文件到Build Phase以及增加-fno-objc-arc标识等,这些都可以通过脚本实现。

准备工作

安装 Ruby 库Xcodeproj

了解几个概念

  • Target:指定了一个用于产品(product), 并且包含了从工程中的一些文件中构建产品的命令.
  • Group:Group 其实是 Xcode 中用来组织文件的一种方式, 它对文件系统没有任何影响 , 无论你创建或者删除一个 Group, 都不会导致 folder 的增加或者移除. 当然如果在你删除时选择 Move to Trash 就是另外一说了,不过Xcode9开始已经同步了Group和Folder,New Group默认创建了对应的Folder.
  • FileRef:FileRef 其实就是 File Reference 的缩写, 当你从 Xcode 中删除一个文件的时候, 它会弹出Remove Reference的提示框. 而其中的 Remove Reference 选项并不会将这个文件移除到垃圾桶, 而只是会将这个文件的引用从 Xcode 的工程文件中删除.

开始操作

1.查找*.xcodeproj并打开

xcodeproj/project.rb

project = Xcodeproj::Project.open('./*.xcodeproj')

2.获取Target

target = project.targets.first

3.创建Group

xcodeproj/project/object/group.rb

group = project.main_group.find_subpath(group的path)

4.添加文件到Group中

xcodeproj/project/object/group.rb 为了避免重复添加引用,添加之前先判断是否引用已经存在

if group.find_file_by_path(file_path)
    //引用已经存在
else 
    //添加引用
   file_ref = group.new_reference(file_path)
end
复制代码

本次操作之后,这个文件就添加到了 group 中, 会出现在工程中的导航栏中。

但是这个文件并没有被添加到 Build Phases 中, 无论你是编译还是作为资源来使用, Xcode 都会提示你无法找到这个文件. 我们还需要把这个文件加入到 Build Phases 中.

5.添加文件到Build Phases中,为MRC设置-fno-objc-arc标识

xcodeproj/project/object/native_target.rb

如果文件是ARC,执行指令

target.add_file_references([file_ref])

如果文件是MRC,执行指令

target.add_file_references([file_ref],'-fno-objc-arc')

6.保存project

project.save

完整代码如下:

def add_file_reference_to_group(target, project, directory_path, to_group, need_mrc)
    if to_group and File::exist?(directory_path) then
        Dir.foreach(directory_path) do |entry|
            if entry != "." and entry != ".." and entry != ".DS_Store"
                pb_gen_file_path = entry
                if to_group.find_file_by_path(pb_gen_file_path)
                    puts pb_gen_file_path + " reference exist"
                else
                    file_reference = to_group.new_reference(pb_gen_file_path)
                    if need_mrc and entry.include?("pbobjc.m")
                        target.add_file_references([file_reference],'-fno-objc-arc')
                    else
                        target.add_file_references([file_reference])
                    end
                end
            end
        end
        project.save
    end
end

project = Xcodeproj::Project.open('./*.xcodeproj')
target = project.targets.first
group = project.main_group.find_subpath(要添加到的Group的path)
add_file_reference_to_group(target, project, 想要添加到指定Group的file的path, group, true)
复制代码

参考文章


以上所述就是小编给大家介绍的《ruby操作项目.xcodeproj》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Haskell School of Expression

The Haskell School of Expression

Paul Hudak / Cambridge University Press / 2000-01 / USD 95.00

Functional programming is a style of programming that emphasizes the use of functions (in contrast to object-oriented programming, which emphasizes the use of objects). It has become popular in recen......一起来看看 《The Haskell School of Expression》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具