Jenkins之自动生成Sophix热修复补丁

本文介绍了如何使用Jenkins结合Sophix自动创建热修复补丁的详细步骤,包括修改混淆规则、配置Jenkinsjob、编写替换和生成补丁的脚本,以及发送邮件通知。
摘要由CSDN通过智能技术生成

本篇博客是《Jenkins之自动进行360加固》的后续。在分享完如何使用Jenkins实现自动加固后,本篇博客将继续分享使用Jenkins自动生成热修复补丁的实现过程。

背景及思路

项目使用git-flow分支模式,而热修复采用的是阿里的移动热修复Sophix方案,并且项目启用了混淆。因此,我的思路很简单:

  1. 在构建正式环境的Apk之前,修改混淆规则-applymapping...,使其与对应版本的混淆符号映射一致。
  2. 在构建正式环境的Apk之后,增加热修复阶段,进行热修复补丁生成。
  3. 热修复补丁生成之后,将补丁文件与一些git提交信息通过邮件发送出来。
  4. 以上步骤仅对hotfix/开头的分支有效。

应用混淆规则

约定

在之前的博客中,我们会把加固包对应的原apk及mapping文件发送出来。**我们约定,在加固包上架之后,把apk及mapping文件提交到项目的release文件夹中,再打上tag。**这样,当我们需要生成热修复补丁时,则可以方便地找到对应版本的原apk及mapping文件。

我们再约定,在app模块的混淆规则文件proguard-rules.pro中,添加一条规则,但是默认情况下注释掉,只在需要生成补丁时才启用它:

#-applymapping ...

Jenkins的配置

接下来,修改Jenkins中的job配置,添加或勾选Fetch tags一项,确保在拉取代码时把tag也给拉取下来。如下:
在这里插入图片描述

编写替换脚本

然后,编写脚本文件进行混淆规则的替换。考虑到热修复的相关文件可能会比较多,我在buildsystem下新建了一个文件夹hotfix,然后再在这个文件夹下添加修改混淆规则的脚本apply-rules.sh,内容如下:

#!/usr/bin/env bash

cd `dirname $0`/../../
projectDir=`pwd`

gitTag=`git describe --tags --abbrev=0 | sed "s/[^0-9\.].*//"`
ruleFile="$projectDir/`find release -name "mapping*$gitTag*.txt"`"

unix=false
case "`uname`" in
  Darwin* )
    unix=true
    ;;
esac

# sed 替换标识符说明: `#`会出现在规则文件中;`/`会出现在路径中;`@`会出现在Jenkins工作空间中。
if [ "$unix" = "true" ]; then
  sed -i "" "s!.*applymapping.*!-applymapping $ruleFile!g" $projectDir/app/pro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值