Test工程管理
在.bashrc中执行脚本。在平时工作中,难免一些功能需要验证,如果直接在Android中开发编译,很不方便,影响代码维护。该脚本核心思想是:在Android目录之外编写test工程,需要Andriod源码中编译的,通过执行脚本中封装的命令,把工程软链接至Android工程目录,编译验证通过后,再删除软链接即可。方便test工程保存备份及保证Android工程干净。
#!/bin/bash
TEST_DIR="${HOME}/test/AndroidTest/"
target_type=
target_test=
function android_demo_test() {
local ori_dir=`pwd`
if [[ -n $1 ]];then
echo $1
target_test=$1
else
list_apk_tests
list_bin_tests
cd ${ori_dir}
read -p "输入要编译测试的test目录:" target_test
if [ -z ${target_test} ];then
return 1
fi
fi
# cd ${TEST_DIR}
local result=`find ${TEST_DIR} -type d -name "${target_test}"`
if [[ -z ${result} ]];then
echo "不存在该目录"
return 1
fi
line=`echo $result | grep "apk" | wc -l`
# echo line:$line
if [ $line -gt 0 ];then
target_type=apk
elif [[ ${result} =~ "bin" ]];then
target_type=bin
fi
cd ${ori_dir}
echo ln -s "${TEST_DIR}${target_type}"\/"${target_test}" ${target_test}
ln -s "${TEST_DIR}${target_type}"\/"${target_test}" ${target_test}
target_type=
target_test=
return 0
}
function list_apk_tests() {
cd "${TEST_DIR}apk/"
echo "apk:"
echo "------------------------------------------"
ls
echo ========================================
echo
}
function list_bin_tests() {
cd "${TEST_DIR}bin"
echo "bin:"
echo "------------------------------------------"
ls
echo ========================================
echo
}
ALL_DEMO_TEST=
function _add_demo_dir() {
i=${#ALL_DEMO_TEST[*]}
for dir in `ls $1`
do
ALL_DEMO_TEST[$i]=$dir
((i++))
done
}
function _list_test_dir() {
unset ALL_DEMO_TEST
_add_demo_dir ${TEST_DIR}apk
_add_demo_dir ${TEST_DIR}bin
COMPREPLY=()
local cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=( $(compgen -W "${ALL_DEMO_TEST[*]}" -- ${cur}) )
}
complete -F _list_test_dir android_demo_test
function android_demo_clear() {
ls -l | grep "^l" | awk '{print $9}' | xargs rm
}