移动测试基础 在 APP 包的 icon 上展示打包的版本信息

ELes for PPmoney · 2018年06月04日 · 最后由 spring-ssh 回复于 2018年06月07日 · 1685 次阅读

适用场景

大家是否有遇到过测试 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——写一个快速定位问题的脚本

共收到 7 条回复 时间 点赞

为啥不直接看版本号啊。。。

恒温 回复

有些 App 需要登陆进去才能看到版本号,对于手机比较多,环境比较多的来说,找到正确的账号也不是容易的事。
这样比较直观。

有在 python 下可用的库么?

ELes #4 · 2018年06月07日 Author
snake 回复

是的 之前我们的 APP 需要登录后才能看到版本号,不过这里的版本号 是指开发过程中的打包版本标识 而不是正式发布的时候在 APP 中的版本号,主要是为了区分测试版本的哈。

ELes #5 · 2018年06月07日 Author
spring-ssh 回复

查了一下是有的,叫做PythonMagick ,我是直接在环境里安装了 ImageMagick,所以没用过这个库,但找到了一篇文章https://blog.csdn.net/sweeper_freedoman/article/details/69789307

ELes #6 · 2018年06月07日 Author
恒温 回复

其实这里的版本号 是指开发过程中的打包版本标识 而不是正式发布的时候在 APP 中的版本号。我们 app 在关于中的版本号用的是正式发布的版本号,没法通过 APP 中的版本号区分测试版本,所以才有了这个需求

ELes 回复

谢谢,下来我去试试。😀

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册