Files
assistant-android/scripts/tinker_release_base.sh
2018-01-13 19:14:58 +08:00

89 lines
2.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# *****************************************************************************
# @author CsHeng
# @2017.9.14 init
#
# 处理tinker打包的事情
# 1、启用tinker标志位
# 2、打出基线包修改tinker base apk path
# 3、禁用tinker标志位
#
# *****************************************************************************
# get current shell absolute dir
CWD=$(cd "$(dirname "$0")"; pwd)
if [ -n "$(git status --porcelain)" ]; then
echo "Please make sure that you commit your code before release "
exit 0
fi
source ${CWD}/tinker_env.sh
# 如果git代码已经提交了目的是为了确认git commit id是能作为一个可追踪的tinkerId
cd ${CWD}
cd ${OLDPWD}
git_sha_new=`git rev-parse --short HEAD`
# dir exists, already patched
if [ -d ${APP_TINKER_BASE} ] && [ -n "$(ls ${APP_TINKER_BASE} | grep ${git_sha_new})" ]; then
echo "git sha has already released: ${git_sha_new}, skip."
exit 0
else
echo "git sha has no history base files, starting release..."
# 也就是tinkerId
git_sha_old=`grep -r TINKER_ID ${GRADLE_FILE}| awk -F '=' '{print $2}'`
if [ "${git_sha_new}" == "${git_sha_old}" ]; then
echo "new git sha same as old git sha: ${git_sha_new}, skip patch."
exit 0
fi
fi
echo "enabling tinker..."
# enable tinker build
sed -i.bak "s/TINKER_ENABLE\=\(.*\)/TINKER_ENABLE\=1/g" ${GRADLE_FILE}
# remove old tinker Id
sed -i.bak "s/TINKER_ID\=\(.*\)/TINKER_ID\=/g" ${GRADLE_FILE}
echo ${CMD_GRADLE_SYNC}
${CMD_GRADLE_SYNC}
echo ${CMD_GRADLE_RELEASE}
${CMD_GRADLE_RELEASE}
# 然后app/build/bakApk/会有一个文件夹保存基线包版本的所有文件这些文件是需要保存起来的以便出bug的时候
# 由于默认的tinker support产生文件的规则都是以时间来判断的那么我们做个排序拿最新的为准
# get apk dir name
old_apk_dir=`ls -t ${TINKER_BAK_APK_BASE} | head -1`
dest_dir=${old_apk_dir}_${git_sha_new}
echo "saving patch base files...to ${dest_dir}"
mkdir -p ${APP_TINKER_BASE}/${dest_dir}
cp -R ${TINKER_BAK_APK_BASE}/${old_apk_dir}/. ${APP_TINKER_BASE}/${dest_dir}
echo "disabling tinker & set release old apk path"
# disable tinker
sed -i.bak "s/TINKER_ENABLE\=\(.*\)/TINKER_ENABLE\=/g" ${GRADLE_FILE}
# write tinker id
sed -i.bak "s/TINKER_ID\=\(.*\)/TINKER_ID\=${git_sha_new}/g" ${GRADLE_FILE}
# apk path
sed -i.bak "s/TINKER_BASE_APK_DIR\=\(.*\)/TINKER_BASE_APK_DIR\=${dest_dir}/g" ${GRADLE_FILE}
# remove tmp file
rm ${GRADLE_FILE}.bak
echo ${CMD_GRADLE_SYNC}
${CMD_GRADLE_SYNC}