目录
- 根据一张图片生成不同大小像素图片
- 批量修改图片格式
- 查找项目中未使用的图片
- shell脚本打包ipa
1、根据一张图片生成不同大小像素图片
步骤:
1、cd到需要含有图片(如:icon.png)的文件夹
2、创建.sh文件(如:test.sh)
3、执行.sh文件,执行命令sh test.sh icon.png
其中.sh命令代码如下:
filename=$1 #$1就是参数icon.png
dirname="compressImage"
#图片名称数组
filename_array=("Icon-1.png" "Icon-2.png" "Icon-60.png" "Icon-60@2x.png" "Icon-72.png" "Icon-72@2x.png" "Icon-76.png" "Icon-76@2x.png" "Icon-ad32.png" "Icon-ad48.png" "Icon-ad72.png" "Icon-ad96.png" "Icon-ad144.png" "Icon-Small-1.png" "Icon-Small.png" "Icon-Small@2x-1.png" "Icon-Small@2x.png" "Icon-Spotlight-iOS7-1.png" "Icon-Spotlight-iOS7.png" "Icon-Spotlight-iOS7@2x-1.png" "Icon-Spotlight-iOS7@2x.png" "Icon-Spotlight.png" "Icon-Spotlight@2x.png" "Icon.png" "Icon@2x.png")
#图片大小数组
size_array=("58" "58" "60" "120" "72" "144" "76" "152" "32" "48" "72" "96" "144" "29" "29" "58" "58" "40" "40" "80" "80" "50" "100" "57" "114")
mkdir $dirname
for ((i=0;i<${#size_array[@]};++i)); do
m_dir=$dirname/${filename_array[i]} #路径:image/
cp $filename $m_dir #将icon.png,拷贝到image文件夹下
sips -Z ${size_array[i]} $m_dir #将上一步拷贝的icon图片进行压缩
done
对sips -Z
举例讲解:
sips -z 300 ~/Desktop/test.png
以上命令将桌面上的test.png
图片改成宽度为300像素,高度自适应大小的图片
也可以指定宽高压缩:
sips -z 300 600 ~/Desktop/test.png
sips
还有其他功能:
#水平翻转图片
sips -f horizontal ~/Desktop/test.png
#垂直翻转
sips -f vertical ~/Desktop/test.png
#顺时针旋转90°
sips -r 90 ~/Desktop/test.png
#获取图片宽高
sips -g pixelWidth -g pixelHeight ~/Desktop/test.png
2、批量修改图片格式
其实还是用的sips
功能
格式:
sips -s format [格式名称] [文件名] --out [输出文件的名称]
通过上面这个命令,如果我们想将test.jpg转换成为PNG格式
sips -s format png test.jpg --out test.png
上面的命令适合转换单个图片文件,要想批量转换图片文件,我们需要使用下面命令格式:
for i in [文件名]; do sips -s format [格式名称] $i --out [终点]/$i.[格式名称];done
示例:将当前目录下所有jpg图片转化为png,存放在新建的文件夹下
dirName="rotateImage"
mkdir $dirName
for i in *.jpg; do sips -s format png $i --out $dirName/$i.png;done
3、查找项目中未使用的图片
步骤:
1、查找工程中所有图片,最后生成一个数组,数组元素为图片名称
2、遍历数组,查看每张图片在项目中是否使用
3、对步骤2结果判断,使用则不处理,未使用则可选择性删除
命令代码:
#! /bin/bash
#查找工程中所有图片
searchImageResult=`find . -name *.png -o -name *.jpg`
for i in $searchImageResult
do
#获取图片名称
imageName=`basename -s .jpg "$i" | xargs basename -s .png`
echo $imageName
#查看是否使用图片,忽略sh文件,检查.m文件
ack --noshell --cpp -l $imageName
result=$?
if [ $result == 0 ]; then
echo "工程有使用图片$imageName"
else
echo "工程没有使用图片$imageName"
#可以选择是否删除
# rm "$i"
fi
done
使用:将.sh
文件(如:test.sh
)拷贝目录下,执行sh test.sh
4、shell脚本打包ipa
先看下代码:
#! bin/bash
#为了简化,默认工程的workspace、project、target名字相同
projectPath=`pwd` # 工程路径
buildConfig="Debug" #编译的方式,有Release,Debug,自定义的AdHoc等
isWorkSpace=true #如果项目中使用了cocoapods,请改为true,否则改为false
projectName=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'` #工程名
IPADir=~/Desktop/${projectName}_IPA #ipa文件路径,可以修改
buildAppToDir=$projectPath/build #打包产生的文件夹(存在.app)
rm -rf $projectPath/build
if $isWorkSpace ; then #判断编译方式
echo "开始编译workspace......................"
xcodebuild -workspace $projectName.xcworkspace -scheme $projectName -configuration $buildConfig clean build SYMROOT=$buildAppToDir
else
echo "开始编译target.........................."
xcodebuild -target $projectName -configuration $buildConfig clean build SYMROOT=$buildAppToDir
fi
#判断结果
if test $? -eq 0
then
echo "~~~~~~~~~~~~~~~~~~~编译成功~~~~~~~~~~~~~~~~~~~"
else
echo "~~~~~~~~~~~~~~~~~~~编译失败~~~~~~~~~~~~~~~~~~~"
exit 1
fi
#查找.app路径,最后在build/Debug-iphoneos
findFolderName=`find . -name "$buildConfig-*" -type d |xargs basename` #查找目录
appDir=$buildAppToDir/$findFolderName/ #app所在路径
#开始打包
xcrun -sdk iphoneos -v PackageApplication $appDir/$projectName.app -o $projectPath/$projectName.ipa
#判断是否打包成功
if [ -f ${projectPath}/${projectName}.ipa ]
then
echo "打包成功."
else
echo "打包失败."
exit 1
fi
# 将打包好的ipa拷贝到目标路径
if [ -d $IPADir ]
then
echo "ipa路径已存在"
else
echo "创建ipa路径文件夹"
mkdir -pv $IPADir
fi
ipaPath=$IPADir/$projectName$(date +%Y%m%d-%H:%M:%S).ipa
cp ${projectPath}/${projectName}.ipa $ipaPath
rm -rf ./build
rm ${projectPath}/${projectName}.ipa
将包含以上代码的.sh 文件放置工程根目录,执行,运行完成桌面会多一个文件夹,内部就是打包好的ipa文件
以上会出现警告(无伤大雅):
warning: PackageApplication is deprecated, use `xcodebuild -exportArchive` instead.
意思是PackageApplication
打包方式过去,使用xcodebuild -exportArchive
命令,以上主要代码部分不再阐述,下面是可以改的地方:
#!/bin/bash
projectPath=`pwd`
workspace=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'`
schemeName=workspace
buildConfig="Debug"
xcodebuild archive -workspace $workspace -scheme $schemeName -sdk iphoneos -configuration $buildConfig ONLY_ACTIVE_ARCH=NO -archivePath ./build/$schemeName.xcarchive
xcodebuild -exportArchive -archivePath ./build/$schemeName.xcarchive -exportPath $projectPath
xcodebuild
和xcrun
都是来自Command Line Tools
,Xcode自带,如果没有可以通过以下命令安装:
xcode-select --install
或手动安装
安装完可在以下路径看到这两个工具:
/Applications/Xcode.app/Contents/Developer/usr/bin/
xcodebuild
主要是用来编译,打包成Archive和导出ipa包,指令
可以执行 xcodebuild -help
查看
xcrun
:打包工具
最后
shell
系列文章:
shell脚本学习(一)
shell脚本学习(二)
shell脚本学习(三)
shell脚本学习(四)
shell
脚本内容学习的东西比较少,需要学习的还是一些unix的命令,所以平时多掌握一些命令才好
另外文中使用到的unix关键字awk、grep、find、basename、Xargs、ack
等我已做了学习笔记,需要的可以艾特我,由于是笔记就不发布了