1、介紹
Xcodeproj是CocoaPods用ruby開發的一個插件庫,能夠用來新建、修改Xcode工程。git
2、wiki和資源
Xcodeproj wiki :https://www.rubydoc.info/github/CocoaPods/Xcodeproj/index
Xcodeproj github: https://github.com/CocoaPods/Xcodeprojgithub
3、刪除 多層文件夾、庫、資源邏輯
Xcodeproj庫提供了不少方法能夠看wiki,不過有個雞肋的地方就是「刪除 多層文件夾、庫、資源」,由於Xcodeproj沒有提供能夠直接刪除多層文件夾、庫、資源的方法,必需要從最深的一層開始,向外刪除。json
如圖示例,須要刪除最底層的,而後一層一層向外刪除。數組
如下爲代碼邏輯:xcode
require 'xcodeproj' require 'json' require 'find' #package_path 該地址爲物理路徑 def deletePackage(package_path) arr=[]; #經過find找到該物理路徑下全部的文件結構地址 Find.find(package_path) do |path| #去除包含.framework、.bundle的路徑,以及文件類型是.m .mm .h .txt .a .DS_Store等的路徑 if !path.index(".framework") && !path.index(".bundle") && !path.end_with?(".m", ".mm", ".h", ".txt", ".a",".DS_Store") #將物理路徑轉成 項目的group路徑,刪除path 前面不相干的路徑,再拼接項目名稱 ,35長度要視實際狀況 path="pickle"+path[35,path.length-35] #按照 group路徑最長的加到arr數組最後面邏輯處理。 if arr.size == 0 arr.push(path) else for n in arr do if path.length > n.length arr.push(path) break end end end end end #對數組進行反轉,最深的路徑在最前面 arr = arr.reverse #將arr裏面全部的路徑進行刪除資源以及引用 for n in arr do removeGroup = @project.main_group.find_subpath(n, true) removeGroup.set_source_tree('<group>') if !removeGroup.empty? then process_group_remove_path(@target, removeGroup) removeGroup.clear() end end end def process_group_remove_path(aTarget, aGroup) puts "\nprocess_group_remove_path..." aGroup.files.each do |file| aTarget.resources_build_phase.remove_file_reference(file) end aGroup.groups.each do |group| process_group_remove_path(aTarget,group) end end
看了很多相關帖子,對於刪除多層結構的沒有相關解決方案,特立此貼。ruby
(由於咱們項目有開發自動化打包,腳本配置在了jenkins上,其中有須要對工程進行動態添加或是刪除)ui