適用場景
大家是否有遇到過測試app的時候,想要提bug卻忘了自己裝的是哪個時候打出來的包,版本號一樣,icon一樣,打開放測試包的文件夾又有一堆測試包,一時間想不起來到底安裝的是哪個包的場景?
又或者有時候覆蓋安裝不知道自己覆蓋安裝成功了沒有,卻沒法校驗的場景?
如果你們有遇到這些煩惱,那么這篇文章正好能解決你們的問題——在APP的icon上加上版本信息吧!
實現效果圖
實現思路
- 通過ImageMagick實現icon圖片的處理,編寫icon處理腳本
- 在構建之前加入app的icon的預處理腳本即可
- 目前我們的測試app都是通過jenkins來打包的,只要在jenkins配置的腳本中,在構建那一步之前插入以下腳本即可(以下腳本運行環境為Mac OS)。
具體腳本實現
# 修改打包圖標添加打包信息
# iOS端插入到“xcodebuild”執行之前
# Android端插入到“./gradlew”執行之前
# 判斷腳本運行環境是否安裝了ImageMagick
convertPath=`which convert`
if [[ ! -f ${convertPath} || -z ${convertPath} ]]; then
echo "==============
WARNING: 你需要先安裝 ImageMagick!!!!:
brew install imagemagick
=============="
exit 0
fi
# 基于上下文編寫要顯示在icon上的信息,支持\n換行
CURRENT_TIME=$(date +"%Y%m%d%H%M")
caption="$CURRENT_TIME\n${CUR_VERSION} \n${BUILD_NUMBER}"
echo "caption: ${caption}"
# 處理圖片步驟
function generateIcon() {
originalImg=$1
# 添加散射+高斯模糊
convert ${originalImg} -spread 10 spread-original.png
convert spread-original.png -blur 10x8 blur-original.png
# 截取下部分
width=`identify -format %w ${originalImg}`
height=`identify -format %h ${originalImg}`
height_0=`expr ${height} / 2`
height_1=$((${height} - ${height_0}))
convert blur-original.png -crop ${width}x${height_0}+0+${height_1} crop-blur-original.png
# 加字
point_size=$(((8 * $width) / 58))
convert -background none -fill black -pointsize ${point_size} -gravity center caption:"${caption}" crop-blur-original.png +swap -composite label.png
# 合成
composite -geometry +0+${height_0} label.png ${originalImg} ${originalImg}
# 清除文件
rm blur-original.png
rm crop-blur-original.png
rm label.png
}
# 找到appicon的文件夾,遍歷執行icon修改
iconpath="$WORKSPACE/${iconpath}"
for file in ${iconpath}/*
do
if [[ $file == *mipmap* ]]
then
filename="$file/icon.png"
generateIcon $filename
fi
done
# ========= end for =========