開發過程當中常常遇到須要腳本拷貝文件,添加文件引用到Xcode,新建group,添加文件到Build Phase以及增長-fno-objc-arc標識等,這些均可以經過腳本實現。git
安裝Ruby庫Xcodeprojgithub
1.查找*.xcodeproj並打開xcode
project = Xcodeproj::Project.open('./*.xcodeproj')
ui
2.獲取Targetspa
target = project.targets.first
.net
3.建立Groupcode
xcodeproj/project/object/group.rbblog
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)
複製代碼