Xcodeproj相关以及删除 多层文件夹、库、资源逻辑
一、介绍
Xcodeproj是CocoaPods用ruby开发的一个插件库,可以用来新建、修改Xcode工程。
二、wiki和资源
Xcodeproj wiki :https://www.rubydoc.info/github/CocoaPods/Xcodeproj/index
Xcodeproj github: https://github.com/CocoaPods/Xcodeproj
三、删除 多层文件夹、库、资源逻辑
Xcodeproj库提供了很多方法可以看wiki,不过有个鸡肋的地方就是“删除 多层文件夹、库、资源”,因为Xcodeproj没有提供可以直接删除多层文件夹、库、资源的方法,必须要从最深的一层开始,向外删除。
如图示例,需要删除最底层的,然后一层一层向外删除。
以下为代码逻辑:
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
看了不少相关帖子,对于删除多层结构的没有相关解决方案,特立此贴。
(因为我们项目有开发自动化打包,脚本配置在了jenkins上,其中有需要对工程进行动态添加或是删除)
Xcodeproj相关以及删除 多层文件夹、库、资源逻辑的更多相关文章
- java 删除多层文件夹
/** * 因为不小心,写了一个死循环,在电脑里创建的了n多层空文件夹 * 并且手动最外层删除不掉. * 所以用写了本代码,从里向外的进行删除操作. * @author Singularity * @ ...
- windows 删除多层文件夹
眼下目录d:\clu_1下有99个目录,名字为0,1....99,每一个目录下又有25个目录,目录名为0,1,....24,其下其下又有以日期命名的目录(如20140521),最后是zip文件.如一个 ...
- Ubuntu下与菜单和图标相关的几个文件夹
转自UBUNTU下与菜单和图标相关的几个文件夹 /usr/share/icons 系统图标文件夹 /usr/share/applications 系统菜单文件夹,要在左上角的应用程序菜单中添加一项 ...
- xp下删除windows7,无法删除windows7文件夹,无法删除windows7文件,双系统卸载,取得文件权限
http://blog.csdn.net/lanmanck/article/details/5722050 ---------------------------------------------- ...
- FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有
2018-11-05 19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...
- java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量
package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...
- 【Mac系统 + Git】之上传项目代码到github上以及删除某个文件夹
之前做开发的时候,用过一段时间git代码管理工具,用命令行操作感觉十分高大上,今天我想从头总结一篇Mac系统下如何利用git上传代码到github上的学习. 目录 一.安装Git 二.创建.ssh文件 ...
- Win7如何删除需要管理员权限才能删除的文件夹
在Windows 7系统运行中.往往会遇到想要删除某个文件夹时,系统提示:文件夹访问被拒绝 你需要权限来执行此操作,如何才能删除此类文件夹呢? ------------------ --------- ...
- PHP批量清空删除指定文件夹内容
PHP批量清空删除指定文件夹内容: cleancache.php <?php // 清文件缓存 $dirs = array( realpath(dirname(__FILE__) . '/../ ...
随机推荐
- winrunner 测试工具
WinRunner在项目中的作用 (winrunner测试设计:http://blog.chinaunix.net/uid/301743/year-2013-list-81.html?/178 ...
- PHP系列 | Session 存储在Redis
默认是文件存储 修改php.ini的设置 session.save_handler = redis session.save_path = “tcp://127.0.0.1:6379″ 如果Redis ...
- 007 webpack基本的用法
1.安装node.js 因为webpack是基于node.js的 2.新建目录 3.需求 列表的隔行变色 4.初始化 在终端中使用npm init命令可以自动创建这个package.json文件 n ...
- openresty开发系列34--openresty执行流程之4访问阶段
openresty开发系列34--openresty执行流程之4访问阶段 访问阶段 用途:访问权限限制 返回403 nginx:allow 允许,deny 禁止 allow ip:deny ip: 涉 ...
- latex怎样生成table字样和caption换行的表格
\begin{table} \caption{\newline The results of running algorithm parallel using MapReduce.} \hline ...
- [LeetCode] 454. 4Sum II 四数之和II
Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such t ...
- 百度地图jsapi 自定义大头针的方法
百度地图jsapi 自定义大头针的方法<pre> var myIcon = new BMap.Icon("http://developer.baidu.com/map/jsdem ...
- 用vue实现列表分页和按钮操作
为中华之崛起而读书 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- LeetCode 43. 字符串相乘(Multiply Strings)
43. 字符串相乘 43. Multiply Strings 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...
- 常用Tables控件介绍(一)
1.DataTables Datatables是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 分页,即时搜索和排序 几乎支持任何数据源:DOM, jav ...