使用脚本删除ios工程中未使用图片

最近在读唐巧大神的《iOS开发进阶》,学到了一个大招:使用脚本删除ios中未使用的图片(纸书上有点小问题,参考github上的issue:使用脚本删除ios中未使用图片)。

issue中得到的建议是:将代码保存在一个.sh文件中,在xcode里面执行shell脚本文件。看到这里,头瞬间大了,大学学的shell都还给linux老师了....还有xcode中怎么执行脚本啊???

google一下,找到mac下创建.sh文件的小白方法:教你在mac上面创建可执行脚本文件。当然还有 XCode中执行脚本的三种方法。下面针对本次操作,自己写个总结:

1、创建可执行脚本文件:

(1)打开sublime,输入以下shell代码:

#! /bin/bash
for i in `find . -name "*.png" -o -name "*.jpg"`; do
file=`basename -s .jpg "$i" | xargs basename -s .png | xargs basename -s @2x` result=`ack -i "$file"`
if [ -z "$result" ]; then
echo "$i"
# 如果需要,可以直接执行删除:
# rm "$i"
fi
done


(2)保存文件名:deletePhoto.sh,记住保存的路径:/Users/linafu/deletePhoto

(3)为脚本文件添加执行权限:在终端输入如下脚本:chmod +x ./deletePhoto

至此,shell脚本就建好了!

2、在xcode中执行已经创建好了的脚本:

(1)在xcode菜单栏中:file->new->target,然后osx->other->external build system,命名为:scriptTarget,这样就建立了一个虚拟的target。

(2)在工程的target区,选中scriptTarget,在build tool里面输入:/Users/linafu/deletePhoto

(3)在工程target的build phasese->target dependencies中添加scriptTarget

好了,以后不论什么时候,build工程之前都会先build这个虚拟target,通过build这个target来运行脚本。当然,我们并不会每次编译都需要删除图片,所以,使用完可以将它从build phasese->target dependencies中移除。

忘了说,在所有的步骤之前,要先在终端通过:brew install ack 命令安装ack(ack用于做搜索)。

哈哈,添加截图太不方便,就不上图了,不够明白可以看文中的链接。另外,这里附上另一个删除ios中未使用图片的方法,用的是python脚本:传送门

使用脚本删除ios工程中未使用图片的更多相关文章

  1. iOS 工程中文件变成红色是什么情况

    iOS 工程中文件变成红色是原有的文件路径改变了,系统找不到了.

  2. react native 之 在现有的iOS工程中集成react native

    在现有的iOS工程中集成react native, 或者说将react native引入到iOS 项目,是RN和iOS混合开发的必经之路 参考官网教程:https://reactnative.cn/d ...

  3. 自动删除Android工程中无用的资源

    开发时间久了, 几个版本迭代之后, 工程中难免留下很多垃圾资源, 造成apk的包很大, 这里介绍一个工具, 可以自动扫描工程中, 没有使用的资源, 然后自动删除: 包括图片, xml, 文本等. 采用 ...

  4. 把 Reative Native 47 版本集成到已有的 Native iOS 工程中

    一.搭建开发环境 http://reactnative.cn/docs/0.46/getting-started.html#content 二.创建一个模板 运行以下命令,创建一个最新版本的 reac ...

  5. iOS工程中的info.plist文件的完整研究

    原地址:http://blog.sina.com.cn/s/blog_947c4a9f0100zf41.html 们建立一个工程后,会在Supporting files下面看到一个"工程名- ...

  6. iOS工程中的info.plist文件

    我们建立一个工程后,会在Supporting files下面看到一个"工程名-Info.plist"的文件,这个是对工程做一些运行期配置的文件,很重要,不能删除. 如果你在网上下载 ...

  7. 使用 shell 脚本配置 iOS 工程

      APP开发过程中,往往需要在多个网络环境或配置中进行切换,以获取不同配置的APP,甚至有时需要用一套代码经过简单的配置生成不同的APP.而手动配置费时费力,且容易出错.这里介绍用脚本工具,去生成不 ...

  8. 定时脚本删除docker容器中内容

    今天在我同步mongo数据库的时候,服务器的磁盘突然就被占满了导致同步中断,mongo容器也停止工作了.然后就想要弄一个能够定时清理同步过程中留存在docker容器中的mongo数据的脚本.话不多说, ...

  9. ios工程中ARC与非ARC的混合

    ARC与非ARC在一个项目中同时使用, 1,选择项目中的Targets,选中你所要操作的Target,2,选Build Phases,在其中Complie Sources中选择需要ARC的文件双击,并 ...

随机推荐

  1. PYDay7&8-递归、冒泡算法、装饰器

    1.登录验证代码 1.1纯登录验证-函数实现 def login(username,password): ''' 用于用户名密码的验证 :param username: 用户名 :param pass ...

  2. python模拟浏览器webdriver登陆网站后抓取页面并输出

    关键在于以下两行代码 特别是find_element_by_xpath写法 很多写成 findElementsByXpath不知道是写错了 还是高级版本是这么写的... #webElement = s ...

  3. 一步一步在ubuntu上安装即时通讯服务器-Openfire

    1.首先登录到ubuntu server.在安装openfire 服务器之前,先确保你的系统已经更新到最新.然后输入下面的命令,一行一行执行,最后安装可用的更新 sudo apt-get update ...

  4. 四丶人生苦短,我用python【第四篇】

    1 基本数据类型 数字    int 字符串   str 布尔值   bool 列表       list 元组       tuple 字典       dict >>>type( ...

  5. Leetcode 385.字典序排序

    字典序排序 给定一个整数 n, 返回从 1 到 n 的字典顺序. 例如, 给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] . 请尽可能的优化算法的时间复杂度和 ...

  6. hdu2081

    #include <stdio.h> #include <malloc.h> int main(){ ]; char *p; int t; p=(); scanf(" ...

  7. poj1717 Dominoes (背包)

    A domino is a flat, thumbsized tile, the face of which is divided into two squares, each left blank ...

  8. 转:C++ Vector用法深入剖析

    http://developer.51cto.com/art/201002/183645.htm C++编程语言中有一种叫做Vector的应用方法,它的作用在实际编程中是非常重要的.在这里我们将会为大 ...

  9. 团伙(codevs 2597)

    题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...

  10. 洛谷 [P3834] 可持久化线段树(主席树)

    主席树可以存储线段树的历史状态,空间消耗很大,一般开45n即可 #include <iostream> #include <cstdio> #include <cstri ...