一個(gè)工程朋鞍,會(huì)存在很多的target 我們工程項(xiàng)目里有20-30個(gè)targets 每次修改/添加權(quán)限工作十分繁瑣且無(wú)任何價(jià)值,所以萌生了批量修改plist的想法
邏輯:
- 邏輯:遍歷info.plist所在的文件夾里的所有plist文件,首先判斷是否有相同的key存在,如果有則把value替換為新的髓废,不存在則添加key和value
- 1.0版本只能1次修改所有plist的一個(gè)key,下次再優(yōu)化可配置多個(gè)key
用法
前期準(zhǔn)備:
1. 需將readFile.sh和changePlist.sh放在同一個(gè)目錄下
2. 修改changePlist.sh 文件里的配置
* A值是為了定位寫入權(quán)限的位置,我選取的key為相機(jī)的key,這里可以換為plist里已存在權(quán)限key的名稱
* B為要添加/替換的key名稱
* C為要添加/替換的value
使用:
1. cd 到readFile.sh根目錄
2. ./build readFile.sh plist文件目錄(所有plist文件都在同一個(gè)目錄下)
readFile.sh
B="-info.plist" #關(guān)鍵字
for file in `ls $1` #注意此處這是兩個(gè)反引號(hào)该抒,表示運(yùn)行系統(tǒng)命令
do
if [[ $file == *$B* ]]
then
./changePlist.sh $1"/"$file
fi
done
changePlist.sh
A="<key>NSCameraUsageDescription</key>"
B="<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>" #要添加/替換的key名稱
C="<string>用來(lái)獲取您的位置完成更好的考勤簽到服務(wù)</string>" #要添加/替換的key Value
count=1
addCount=0;
sameCount=0
while read line
do
if [ "$line" = "$B" ];then #判斷是否存在相同的key
sameCount=$[count+1]
count=$[count+1]
elif [ "$line" = "$A" ];then #判斷添加權(quán)限的位置
addCount=$[count+1]
count=$[count+1]
else
count=$[count+1]
fi
done < $1
if [ "$sameCount" -eq 0 ];then
if [ "$addCount" -eq 0 ];then
echo "沒(méi)有相同"
echo "添加位置 $count"
gsed -i "$addCount a\ $B" $1
addCount=$[addCount+1]
gsed -i "$addCount a\ $C" $1
else
echo "沒(méi)有找到相應(yīng)位置添加 $1"
fi
else
echo "存在相同 替換value $sameCount"
gsed -i "$sameCount c $C" $1
fi
tips
gsed為Mac下安裝gnu-sed后的用法壳猜,Mac與linux下的sed語(yǔ)法存在許多不同碳抄,相同的語(yǔ)法在mac環(huán)境下會(huì)報(bào)錯(cuò),遂用gnu-sed