清除ios工程里未使用的图片

一个ios工程经过多次改版之后,往往有很多废弃的图片没有清理掉,如果清理掉这些图片就可以让ipa包的体积大大减小。 我做的项目里有700多张图片,其中没用到的就有200多张,所以清理图片还是很有必要的。

一般ios项目的目录结构大致如下:

/Users/Jobs/Documents/Poboke	  //项目文件夹
│
├── Poboke.xcodeproj		//工程启动文件
│
└── Poboke				  //资源文件夹
  ├── main.m
  ├── AppDelegate.h
  ├── AppDelegate.m
  ├── ViewController.h	//代码文件
  ├── ViewController.m
  ├── Poboke-Info.plist
  ├── Poboke-Prefix.pch
    ├── Icon.png
  ├── Icon@2x.png
  ├── Icon-60@2x.png
  ├── button.png
  ├── button@2x.png	   //图片文件
  ├── dialog.png
  ├── dialog@2x.png
  ├── line@2x.png
  └── ......

一、安装Silver Searcher。

在linux系统里可以使用ack-grep来搜索内容,但是mac系统里没有

ack-grep

不过mac系统可以安装Silver Searcher来搜索字符串,使用方法和ack-grep相似,而且搜索速度比ack-grep快。

打开终端,输入以下命令安装:

//先安装homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

//再安装Silver Searcher brew install the_silver_searcher

安装完后就可以通过ag命令(ack-grep的缩写)来搜索字符串了。

二、搜索ios工程里没用到的图片。

ios的图片分为标清和高清两种,高清图片的名字是以”@2x”结尾的。一般代码里不会写上”@2x”,所以搜索时要先把”@2x”去掉。如果搜索到的结果为空字符串,说明代码里没有引用该图片。

获取到所有未使用的图片名,排序后保存到pics.txt文件里,python代码如下:

# -*- coding : utf-8 -*-

import os
import glob

#资源路径
path = '/Users/Jobs/Documents/Poboke/Poboke'

#获取资源路径下所有的png图片名
pics = glob.glob1(path, '*.png')
pics = [pic[:-4].replace('@2x', '') for pic in pics]

#找出未使用的图片
unused_pics = []
for pic in set(pics):
  command = 'ag "%s" %s'%(pic, path)
  result = os.popen(command).read()
  if result == '':
    unused_pics.append(pic)

#将未使用的图片文件名保存到文本
txt_path = 'pics.txt'
txt = '\n'.join(sorted(unused_pics))
os.system('echo "%s" > %s'%(txt, txt_path))
print 'Done!'

三、手动检查图片名。

把图片名保存到文本里是为了先确认一下是否有误搜到的图片。

比如搜到了这么几张未使用的图片:

star_01.png

star_02.png

star_03.png

star_04.png

而代码是这么写的:

for (int i = 1; i <= 4; ++i) {
    NSString *imageName = [NSString stringWithFormat:@"star_%02i", i];
    UIImage *image = [UIImage imageNamed:imageName];
    ......
}

那么在代码里肯定搜索不到”star_01″,而实际上用到了这张图片,所以要看文本里的图片名有没有含有连续数字,有的话要再手动搜索一下代码。

四、批量删除图片。

用python代码读取pics.txt的内容,将里面的图片删掉,代码如下:

# -*- coding : utf-8 -*-

import os

#资源路径
path = '/Users/Nanker/Desktop/Manager/'

#读取要删除的图片名
txt_path = 'pics.txt'
pics = open(txt_path).readlines()

#删除标清和高清图片
for pic in pics:
  pic = pic.strip('\n')
  sd_pic = path + pic + '.png'
  hd_pic = path + pic + '@2x.png'
  
  os.system('rm "%s"'%sd_pic)
  os.system('rm "%s"'%hd_pic)

print 'Done!'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值