美文网首页
【Shell脚本】Android 自动集成三方AAR小记

【Shell脚本】Android 自动集成三方AAR小记

作者: heheworld | 来源:发表于2023-03-01 22:44 被阅读0次

背景: 项目中的一个模块集成了三方的一个aar包,彼此都是黑盒,
每次三方验证都需要本地手动集成编译,再提供版本给三方;
效率低.碰上对方反复修改,不胜其扰.

方案

1.单独在服务器上建一个git仓库, 新建各分支对应模块分支;
2.仓库监听aar变化, 如果有提交, 启动编译脚本 (带上项目名称+分支名称)
3.编译输出在仓库当前路径,并主动merge,三方直接pull即可拿到最新的成果物

主要脚本如下
#!/bin/bash
//This is rebuild apk script for aar update.
#项目
ProjectName=""
#分支
BranchName=""
echo 'Step1 get projectName && branchName '
while getopts ":p:b:" OPT
do
        case $OPT in
                p)
                        ProjectName="$OPTARG"
                        echo $OPTIND
                        echo '项目名称:'${ProjectName}
                        ;;
                b)
                        BranchName="$OPTARG"
                        echo '分支名称:'${BranchName}
                        ;;
               ?)
                        echo "error"
                        exit 1
                        ;;
        esac
done

echo '项目名称:' $ProjectName
echo '分支名称:' $BranchName
echo ' Start Complie ... '
echo ' Step2 clone Radio code ... '
git clone -b ${BranchName} "ssh://xxx@ip:port/path/android-prj/vendor/packages/apps/${ProjectName}"


cp local.properties ./${ProjectName}/

echo ' Step3 get the name of  origin aar ... '
originName=""
cd ./${ProjectName}/app/libs/
for originFile in $(ls)
do
        if [ "${originFile##*.}" = "aar" ]; then 
          originName=$originFile
        fi
done


echo "origin aar file name =  ${ProjectName}/app/libs/$originName"
echo "Step4 update new AAR  "

cd ../../../
Current_Path='pwd'
$Current_Path
for uploadFile in $(ls)
do

    if [ "${uploadFile##*.}" = "aar" ]; then
      mv ${uploadFile} "${ProjectName}/app/libs/${originName}"
    fi
done

echo "Step5  start build new APK"
//gradle 编译apk需要 用到 本地sdk 路径 需要本地预先配置, 或者使用 mk编译
cp local.properties ${ProjectName}/
cd ${ProjectName}
#重新编译 debug & release 
gradle clean
gradle assembleRelease

#拷贝apk到指定目录
echo "step6 copy APK"
pwd
#cd "../$ProjectName/app/build/outputs/apk/release"
cd "../$ProjectName/app/build/outputs"
#for apkFile in $(ls)
#do
//  if [ "${apkFile##*.}" = "apk" ]; then
//  echo "===$apkFile==="
//    mv ${apkFile} "../../../../../../xxxx.apk"
//  fi
//done
cp -r apk ../../../../

cd ../../../../
rm -rf ${ProjectName}
echo " Over"

local.properties 文件是本地SDK配置路径,在服务器上应该用不到

相关文章

网友评论

      本文标题:【Shell脚本】Android 自动集成三方AAR小记

      本文链接:https://www.haomeiwen.com/subject/pyarihtx.html