在APP包的icon上展示打包的版本信息

适用场景

大家是否有遇到过测试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 =========

参考资料

iOS——写一个快速定位问题的脚本

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 164,125评论 24 696
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    挣奶粉的打工人阅读 18,968评论 8 176
  • 宅女一般不出门,出门一定是有事的。 今天要出门考试,昨晚母后大人问我要多少钱,我说吃个早饭,你随意给点儿零钱就可以...
    萌芽mua阅读 141评论 0 0
  • 强引用:不仅能引用到对象,而且告诉垃圾回收器不能回收; 软引用:引用到对象,内存不足时垃圾回收器可以回收; 弱引用...
    手打丸子阅读 145评论 0 0
  • 曾经这里有瓦蓝的天,碧绿的湖 红柳低垂水面 胡杨沙沙作响 一群群野鸭冲散粼粼波光 从晚霞里走出的楼兰姑娘 优雅地托...
    不羁国哥的权力阅读 118评论 0 3
  • 鬼和人都相互怕着 不是在床上装睡 就是在地下装死 以凌晨十二点的钟声为界 以荒野的黄土为界 以纸钱浴火的灰烬为界 ...
    柴狗李小白阅读 140评论 0 0