您的位置:首页 > 移动开发 > Android开发

有关sh脚本,优化svn管理android事务

2017-06-29 10:04 141 查看

包含功能

svn export android 代码

自动编译debug user版本

自动check fota升级需要用到的剩余空间大小

多个项目排序编译

脚本内容

custom.sh

#!/bin/bash
# SUN:jicong.wang version 2.0

param=$1
path="http://192.168.1.233/svn/SPRD7731/trunk/MocorDroid6.0_Trunk_16b_rls1_W16.29.2"
rpath="http://192.168.1.233/svn/sprd7731/trunk/MocorDroid6.0_Trunk_16b_rls1_W16.29.2_SUNVOV/C7367/C7367_HWD"
gsm_path="http://192.168.1.233/svn/sprd7731/trunk/GSM/r11"

eng_version="sp7731c_c7367_fwvga_oversea-userdebug"
user_version="sp7731c_c7367_fwvga_oversea-user"
out_file="sp7731c_c7367_fwvga"

custom_list=(
"C7367_FWVGA_Driver_R8"
"C7367_FWVGA_R8_BengalHOTWAV_NOGPS_B1"
)

###################################################################################################
#
# call svn_function
#
###################################################################################################
if [ ! -f "svn_function" ];then
svn export --force http://192.168.1.233/svn/sprd7731/trunk/DOC/svn_function else
echo "svn_function is exist!!!"
fi
echo "wangjicong $@"
source svn_function $@


svn_function.sh

#!/bin/bash
# SUN:jicong.wang version 3.0

#######################################################################
#
# export gsm
#
#######################################################################
function export_gms(){
svn --force export ${gsm_path} ./ | tee gsm.txt;
if grep -q "已导出版本" gsm.txt
then
echo 已导出
else
echo "gsm export error">error.log
export_gms
fi
}
#######################################################################
#
# export all svn files and folders
#
#######################################################################
function export_all(){
echo "-----------start to export all model-------------"
index=0
for var in $list
do
index=`expr $index + 1`
if [ $index -lt 10 ];then
export_single $var "0"$index
else
export_single $var $index
fi
done

export_gms
export_check
}
#######################################################################
#
# export one file or folder
#
#######################################################################
function export_single(){
svn --force export ${path}/$1 | tee svn_info/$2.txt;
echo "$1 result is "$? >> svn_result.txt

if grep -q 完成导出 svn_info/$2.txt || grep -q 已导出版本 svn_info/$2.txt
then
echo 已导出
else
echo "$1 export error">error.log
export_single $1 $2
fi
}
#######################################################################
#
# export result check
#
#######################################################################
function export_check(){
echo "-----------start to check leave model-------------"
for i in `ls svn_info/`
do
echo "$i "`tail -n 1 svn_info/$i`;
done

index=0
for var in ${custom_list[*]}
do
index=`expr $index + 1`
echo r$index.txt`tail -n 1 r$index.txt`;
done

echo gsm.txt`tail -n 1 gsm.txt`;
}
#######################################################################
#
# export custom product code and resource
#
#######################################################################
function export_custom(){
echo "-----------start to export all resource-------------"

index=0
for var in ${custom_list[*]}
do
index=`expr $index + 1`
svn --force export ${rpath}/$var ./ | tee r$index.txt;
done

index=0
for var in ${custom_list[*]}
do
index=`expr $index + 1`
if grep -q "已导出版本" r$index.txt
then
echo r$index.txt`tail -n 1 r$index.txt`;
else
echo "resource $indext export error">error.log
export_custom
break
fi
done

}
#######################################################################
#
# make eng version
#
#######################################################################
function make_eng_version(){
echo "-----------start to new eng version -------------"
source build/envsetup.sh
lunch_list=`print_lunch_menu`

num="n"
for var in $lunch_list
do
# echo $var
if [ $var = $eng_version ];then
echo $var
break
else
num=$var
fi
done

num=${num%.}
echo "num is "$num
lunch $num
sprd=`echo $path | grep -i "SPRD"`

if [ "$sprd" != "" ];then
echo "start kheader"
kheader
fi

make -j8 2>&1 |tee log.txt
}
#######################################################################
#
# check fota
#
#######################################################################
function checkFota(){
cp log.txt log.h

grep -A 1 "Created filesystem with" log.h >> fota_temp.h

grep -B 1 "system.img" fota_temp.h >> fota.h

fota=`grep "Created filesystem with" fota.h `

rm -rf log.h fota_temp.h fota.h

fota_index=0

for var in $fota
do
fota_index=`expr $fota_index + 1`
if [ "$fota_index" = "7" ];then
#echo $var
total=${var##*/}
#echo $total
used=${var%%/*}
#echo $used
free1=`expr $total - $used`
#echo $free1
free2=`expr $free1 \* 4096`
#echo $free2
free3=`expr $free2 / 1024`
#echo $free3
free=`expr $free3 / 1024`
#echo $free

if [ "50" -gt "$free" ];
then
echo -e "\033[30;31m错误:Fota升级system剩余空间为$free"M",小于50M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\033[0m"
else
echo -e "\033[30;32mFota升级system剩余空间为$free"M",大于50M\033[0m"
fi
break
fi

done

}
#######################################################################
#
# make eng version
#
#######################################################################
function make_user_version(){
echo "-----------start to new usr version -------------"

rm -rf out/target/product/$out_file/system/build.prop
rm -rf out/target/product/$out_file/obj/ETC/system_build_prop_intermediates

source build/envsetup.sh
lunch_list=`print_lunch_menu`

num="n"
for var in $lunch_list
do
if [ $var = $user_version ];then
echo $var
break
else
num=$var
fi
done

num=${num%.}
echo $num

lunch $num

sprd=`echo $path | grep -i "SPRD"`

if [ "$sprd" != "" ];then
echo "start kheader"
kheader
fi

make -j8 2>&1 |tee log.txt

#6735 6737、展讯7.0的fota需要编译ota
sprd=`echo $path | grep -E "MTK6735|7.0"`
if [ "$sprd" != "" ];then
make -j8 otapackage
fi

copyfile

checkFota
}
#######################################################################
#
# cp mtk APDB file to out img folder
#
#######################################################################
function cp_apdb_file_to_out_img(){
apdb=`find out/target/product/$out_file/obj/ -name "APDB*" -type f ! -name "*_ENUM"`
echo $apdb
cp -rfv $apdb out/target/product/$out_file/
echo "拷贝APDB文件到out img同级目录成功!"
}
#######################################################################
#
# export fail svn folder
#
#######################################################################
function export_fail(){
echo "-----------start to check $parm model-------------"
index=0
for var in $list
do
index=`expr $index + 1`
if [ $index == $1 ];then
if [ $1 -lt 10 ];then
export_single $var "0"$1
else
export_single $var $1
fi
fi
done
}
#######################################################################
#
# svn files and folders detail
#
#######################################################################
function list_detail(){
index=0
for var in $list
do
index=`expr $index + 1`
echo $index:$var
done
}

#######################################################################
#
# cp out file to versionTools/image/
#
#######################################################################
function copyfile(){

sprd=`echo $path | grep -i "SPRD"`

if [ "$sprd" != "" ];then
find out/target/product/$out_file/ -maxdepth 1 -type f -exec cp -rv {} versionTools/image/ \;
chmod 777 versionTools/*
else
#echo -e "\033[30;31mMtk no need to cp versionTools!\033[0m"
cp_apdb_file_to_out_img

band_full=`grep "CUSTOM_MODEM" ./device/maisui/$out_file/ProjectConfig.mk | sed s/[[:space:]]//g`
band=${band_full##*=}
echo $band
cp -rvf ./vendor/mediatek/proprietary/modem/$band/ ./out/target/product/$out_file/
fi
}

#######################################################################
#
# main
#
#######################################################################
param=$1

ROOT=`pwd`"/svn_info";

if [ ! -d "$ROOT" ];then
mkdir $ROOT;
fi

list=`svn list $path`

if [ "$param" = "" ];then
export_all
elif [ "$param" = "c" ];then
export_check
elif [ "$param" = "r" ];then
export_custom
elif [ "$param" = "ne" ];then
make_eng_version
elif [ "$param" = "nu" ];then
make_user_version
elif [ "$param" = "l" ];then
list_detail
elif [ "$param" = "cp" ];then
copyfile
elif [ "$param" = "cf" ];then
checkFota
else
export_fail $1
fi


多个项目脚本排序编译

多个项目脚本排序编译,下班后打开脚本,第二天就可以收网,发版本了

make.sh

#!/bin/bash
#########################################################
# createFloderSinglework
#########################################################
function createFolderSinglework(){
file=$1
if [ ! "$file" = "" ];then
file_name=${file#./*}
echo $file_name
dir_name=${file_name%*.sh}"_"`date +%F`
echo $dir_name

if [ ! -d "$dir_name" ];then
echo "start to mkdir file"
mkdir $dir_name
else
echo "folder is exist"
fi
cp $file $dir_name
fi
}

#########################################################
# svn export and make project
#########################################################
function doSingleProject(){
file=$1
if [ ! "$file" = "" ];then
file_name=${file#./*}
dir_name=${file_name%*.sh}"_"`date +%F`

cd ./$dir_name
#echo ./$dir_name/$dir_name
source $file_name ""
source $file_name r
source $file_name nu
cd -
fi
}

#########################################################
# main
#########################################################
echo "====================编译文件列表==================="
sh_file_list=`find ./* -maxdepth 0 -name "*.sh"`
i=0
for var in $sh_file_list
do
i=`expr $i + 1`
echo "     $i : "$var
custom[$i]=$var
done
echo
echo "请选择项目脚本的数字 [eg: 1 2 3 ]"
read make_files_list

for var in $make_files_list
do
echo "start create folder $var == ${custom[$var]} ======================="
createFolderSinglework ${custom[$var]}
done

for v in $make_files_list
do
echo "start make $v == ${custom[$v]} ======================="
doSingleProject ${custom[$v]}
done
#########################################################


附件:

vesion.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: