一、介绍
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相关以及删除 多层文件夹、库、资源逻辑的更多相关文章

  1. java 删除多层文件夹

    /** * 因为不小心,写了一个死循环,在电脑里创建的了n多层空文件夹 * 并且手动最外层删除不掉. * 所以用写了本代码,从里向外的进行删除操作. * @author Singularity * @ ...

  2. windows 删除多层文件夹

    眼下目录d:\clu_1下有99个目录,名字为0,1....99,每一个目录下又有25个目录,目录名为0,1,....24,其下其下又有以日期命名的目录(如20140521),最后是zip文件.如一个 ...

  3. Ubuntu下与菜单和图标相关的几个文件夹

    转自UBUNTU下与菜单和图标相关的几个文件夹 /usr/share/icons  系统图标文件夹 /usr/share/applications  系统菜单文件夹,要在左上角的应用程序菜单中添加一项 ...

  4. xp下删除windows7,无法删除windows7文件夹,无法删除windows7文件,双系统卸载,取得文件权限

    http://blog.csdn.net/lanmanck/article/details/5722050 ---------------------------------------------- ...

  5. FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有

    2018-11-05  19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...

  6. java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量

    package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...

  7. 【Mac系统 + Git】之上传项目代码到github上以及删除某个文件夹

    之前做开发的时候,用过一段时间git代码管理工具,用命令行操作感觉十分高大上,今天我想从头总结一篇Mac系统下如何利用git上传代码到github上的学习. 目录 一.安装Git 二.创建.ssh文件 ...

  8. Win7如何删除需要管理员权限才能删除的文件夹

    在Windows 7系统运行中.往往会遇到想要删除某个文件夹时,系统提示:文件夹访问被拒绝 你需要权限来执行此操作,如何才能删除此类文件夹呢? ------------------ --------- ...

  9. PHP批量清空删除指定文件夹内容

    PHP批量清空删除指定文件夹内容: cleancache.php <?php // 清文件缓存 $dirs = array( realpath(dirname(__FILE__) . '/../ ...

随机推荐

  1. Symfony之入门学习

    最近因业务需要,主要针对Edusoho进行二次开发.但是对于Symfony,我并不熟悉,我所了解的是,它的那套与我在Java中常用的开发模式MVC,本质上并不多大差异,就是所使用的语言不一样而已.下面 ...

  2. 【大数据作业十一】分布式并行计算MapReduce

    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce的功 ...

  3. Cesium学习笔记-工具篇20-PrimitiveTexture自定义渲染-贴图【转】

    前几篇博客我们了解了自定义点.线.面绘制,这篇我们接着学习cesium自定义纹理贴图.我们完成点线面的绘制,只是绘制出了对象的框架,没有逼真的外观.逼真外观是需要设置材质来实现:Material . ...

  4. Spark2.x(五十六):Queue's AM resource limit exceeded.

    背景: 按照业务需求将数据拆分为60份,启动60个application分别运行对每一份数据,application的提交脚本如下: #/bin/sh #LANG=zh_CN.utf8 #export ...

  5. (二)OpenCV-Python学习—对比度增强

    ·对于部分图像,会出现整体较暗或较亮的情况,这是由于图片的灰度值范围较小,即对比度低.实际应用中,通过绘制图片的灰度直方图,可以很明显的判断图片的灰度值分布,区分其对比度高低.对于对比度较低的图片,可 ...

  6. 扩展自easyui的combo组件的下拉多选控件

    首先上效果图 代码片段: 有需要的朋友微信联系我. 如果这篇文章对您有帮助,您可以打赏我 技术交流QQ群:15129679    

  7. 026_如何在MAC下输入主要国家货币符号?

    由于出国旅游啥的经常会记录一些东西,不避免的会遇到各种货币符号 一. 人民币: ¥(sogo输入法切换到中文模式,然后"shift键 + 4"即可) 美元: $(sogo输入法切换 ...

  8. linux命令(11)环境变量:查看和添加环境变量

    linux 环境变量系统: 系统级别:/etc/profile./etc/bashrc/ ./etc/environment 用户级别:~/.profile.~/.bashrc. ~/.bash_pr ...

  9. Uni-app 使用总结

    1.去掉顶部导航 在page.json中添加 "globalStyle" : { "navigationBarTextStyle" : "black& ...

  10. [转]npm 遇到 write access的问题怎么办

    ubuntu下使用 npm install -g 可能会遇到这个问题. 链接地址:https://www.jianshu.com/p/31744aa44824