前言
最近公司运营活动比较多, 所以 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 图标的方式了, 替换欢迎页图片也是同样的步骤看下最终效果:
不过这样处理不足之处是只能适用于欢迎页数量固定的情况所以如果图片数量不固定可以考虑统一上传一个压缩包, 然后在 Jenkins 解压遍历图片文件
好了, 现在发版前运营和产品妹子再也不会找我换图片了
来源: https://juejin.im/post/5aa7468f518825555c1d50a0