目錄
- 根據一張圖片生成不同大小像素圖片
- 批量修改圖片格式
- 查找項目中未使用的圖片
- shell腳本打包ipa
1墓猎、根據一張圖片生成不同大小像素圖片
步驟:
1、cd到需要含有圖片(如:icon.png)的文件夾
2酌住、創(chuàng)建.sh文件(如:test.sh)
3泪掀、執(zhí)行.sh文件,執(zhí)行命令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
)拷貝目錄下察郁,執(zhí)行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 "創(chuàng)建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 文件放置工程根目錄末荐,執(zhí)行,運行完成桌面會多一個文件夾新锈,內部就是打包好的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包,指令
可以執(zhí)行 xcodebuild -help
查看
xcrun
:打包工具
最后
shell
系列文章:
shell腳本學習(一)
shell腳本學習(二)
shell腳本學習(三)
shell腳本學習(四)
shell
腳本內容學習的東西比較少墩新,需要學習的還是一些unix的命令贸弥,所以平時多掌握一些命令才好
另外文中使用到的unix關鍵字awk、grep海渊、find绵疲、basename、Xargs臣疑、ack
等我已做了學習筆記最岗,需要的可以艾特我,由于是筆記就不發(fā)布了