一键将App Bundle安装到指定手机

将APP bundle安装的手机,要经过几道步骤,此脚本用来一键安装,仅此而已。

#!/bin/bash
RED='\033[0;31m'
PURPLE='\033[0;35m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color

ROOT_PATH="${PWD}/.aab/"
APKS_PATH="${ROOT_PATH}apks/outoput.apks"
DEVICE_SPEC_DIR="${ROOT_PATH}device_spec/"
DEVICE_SPEC="${DEVICE_SPEC_DIR}device-spec.json"
AAB_PATH=${1}
DEVICE_ID=${2}

printError(){
  echo "${RED} ${1} ${NC}";
}

printInfo(){
  echo "${GREEN} ${1} ${NC}";
}

echo "安装aab到当前设备 ${NC}"
echo "创建工作空间目录:${ROOT_PATH}"
echo "aab路径:${AAB_PATH}"

mkdir -p "${ROOT_PATH}"

if test -f "$AAB_PATH"; then
  echo "$AAB_PATH 存在"
else
  printError "请提供.aab文件路径,e.g."
  printError "sh install_aab.sh xxxx.aab"
  exit 0
fi

#校验结果
checkResult(){
    if [[ ${PIPESTATUS[0]} -ne "0" ]];
    then
        printError "$1失败!Error:${PIPESTATUS[0]}";
        exit 1;
    else
        echo "${PURPLE}$1成功!${NC}";
    fi
}

#清空文件夹
clearFolder(){
    if [[ -d "${1}" ]]; then
            echo "${RED}清空文件夹 ${1} ${NC}"
            rm -r "${1}"
    fi
}

alias bundletool="java -jar ./ProductFlavors/bundletool-all-1.4.0.jar"
#加载bundletool 到本地

echo
echo
echo
printInfo "清空设备配置目录……"
clearFolder ${DEVICE_SPEC_DIR}


if [ -z "${2}" ]
then
DEVICE_PARAM=""
else
DEVICE_PARAM="--device-id=${DEVICE_ID}"
fi

echo
echo
echo
printInfo "开始生成当前指定设备的配置……"
bundletool get-device-spec ${DEVICE_PARAM} --output=${DEVICE_SPEC}
checkResult "生成当前指定设备的配置"

echo
echo
echo
printInfo "开始生成当前指定设备的apks,请等待……"
bundletool build-apks  --device-spec=${DEVICE_SPEC} --bundle=${AAB_PATH} --output=${APKS_PATH} \
--overwrite \
--ks=证书文件 \
--ks-pass=pass:证书存储密码 \
--ks-key-alias=证书别名 \
--key-pass=pass:证书密码
checkResult "生成当前指定设备的apks"

echo
echo
echo
printInfo "开始安装,请等待……"
bundletool install-apks  ${DEVICE_PARAM} --apks=${APKS_PATH}
checkResult "安装apks到指定设备"