Files
assistant-android/scripts/tinker_release_base.sh
2017-09-15 15:34:50 +08:00

81 lines
2.4 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)
GRADLE_FILE=${CWD}/../gradle.properties
BAK_APK_DIR=${CWD}/../app/build/bakApk/
PATCH_BACKUP=${CWD}/../patch/
# 如果git代码已经提交了目的是为了确认git commit id是能作为一个可追踪的tinkerId
cd ${CWD}
if [ -n "$(git status --porcelain)" ]; then
echo "Please make sure that you commit your code before release "
exit 0
fi
cd ${OLDPWD}
path_dir=`grep -r TINKER_BASE_APK_DIR ${GRADLE_FILE}| awk -F '=' '{print $2}'`
path_base=`echo ${path_dir} | awk -F '_' '{print $1}'`
git_sha_new=`git rev-parse --short HEAD`
git_sha_old=`echo ${path_dir} | awk -F '_' '{print $2}'`
if [ "${git_sha_new}" == "${git_sha_old}" ]; then
echo "new git sha same as old git sha, skip patch."
exit 0
fi
echo "enabling tinker..."
# enable tinker build
sed -i.bak "s/TINKER_ENABLE\=\(.*\)/TINKER_ENABLE\=1/g" ${GRADLE_FILE}
echo "recompiling gradle scripts..."
${CWD}/../gradlew --recompile-scripts
echo "gradle assembleRelease..."
# 由于我们可能在内部发布的时候也使用这个工具所以不知道具体release哪个索性一次性release掉
${CWD}/../gradlew assembleRelease --parallel
# 然后app/build/bakApk/会有一个文件夹保存基线包版本的所有文件这些文件是需要保存起来的以便出bug的时候
# 由于默认的tinker support产生文件的规则都是以时间来判断的那么我们做个排序拿最新的为准
# get apk dir name
oldAppDir=`ls -t ${BAK_APK_DIR} | head -1`
git_sha=`git rev-parse --short HEAD`
dest_dir=${oldAppDir}_${git_sha}
echo "saving patch base files...to ${dest_dir}"
mkdir -p ${PATCH_BACKUP}/${dest_dir}
cp -r ${BAK_APK_DIR}/${oldAppDir}/ ${PATCH_BACKUP}/${dest_dir}
echo "disabling tinker & set release old apk path"
sed -i.bak "s/TINKER_ENABLE\=\(.*\)/TINKER_ENABLE\=/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 "recompiling gradle scripts..."
${CWD}/../gradlew --recompile-scripts