前言
最近公司运营活动比较多,所以App的发版也比较频繁,而且每次发版都会更改App的图标和欢迎页,以前都是运营和产品单独发给我,我再手动替换到工程中去,虽说这样就有了和运营妹子交流的机会,但本吊心里只有技术,次数多了就觉得麻烦。正好最近在学用Jenkins进行Android持续集成的东西,正好可以用来解决这个问题。
实战
不懂如何配置Jenkins和用Jenkins进行Android多渠道打包的,可以看下我的上一篇文章Jenkins+Git+Walle+AndResGuard打造Android多渠道打包系统,当然网上更详细的教程也有很多,就不再赘述了。
进入项目的配置里面,在general
里面选择参数化构建过程,加入两个参数:
Inject environment variables to the build process
里面加入图标的路径参数(找不到这个选项的需要安装
Environment Injector
插件);
SOURCE_TARGET=app
SOURCE_SRC=src
SOURCE_JAVA=main
SOURCE_SRC=src
SOURCE_RES=res
复制代码
再在构建里面加入Execute Shell
,注意要放在Invoke Gradle Script
,也就是实际的gradle编译过程之前。内容如下:
cd ${WORKSPACE}
iconFile="launcher.png"
# 上传的图标会放在当前Jenkins项目的根目录,下面判断$iconFile是否存在
if [ true == $isCustom ] && [ -f "$iconFile" ]; then
Launcher_xxxh="${WORKSPACE}/${SOURCE_PATH}/${SOURCE_TARGET}/${SOURCE_SRC}/${SOURCE_JAVA}/${SOURCE_RES}/mipmap-xxxhdpi"
Launcher_xxh="${WORKSPACE}/${SOURCE_PATH}/${SOURCE_TARGET}/${SOURCE_SRC}/${SOURCE_JAVA}/${SOURCE_RES}/mipmap-xxhdpi"
Launcher_xh="${WORKSPACE}/${SOURCE_PATH}/${SOURCE_TARGET}/${SOURCE_SRC}/${SOURCE_JAVA}/${SOURCE_RES}/mipmap-xhdpi"
Launcher_h="${WORKSPACE}/${SOURCE_PATH}/${SOURCE_TARGET}/${SOURCE_SRC}/${SOURCE_JAVA}/${SOURCE_RES}/mipmap-hdpi"
sips -z 512 512 launcher.png --out ic_launcher.png
mv ic_launcher.png ${Launcher_xxxh}
sips -z 384 384 launcher.png --out ic_launcher.png
mv ic_launcher.png ${Launcher_xxh}
sips -z 256 256 launcher.png --out ic_launcher.png
mv ic_launcher.png ${Launcher_xh}
sips -z 192 192 launcher.png --out ic_launcher.png
mv ic_launcher.png ${Launcher_h}
fi
复制代码
上面的shell脚本比较简单,用到了一个图片处理命令,就是将上传的图片调整到对应大小后分别放入对应的文件夹里,然后开始编译就行了:
上面就是替换利用Jenkins替换App图标的方式了,替换欢迎页图片也是同样的步骤。看下最终效果:
好了,现在发版前运营和产品妹子再也不会找我换图片了。