Android OUT dir 찾아가기

envsetup.sh가 실행되어 있고, lunch가 설정되어 있을경우, Android Root Dir에서 $ANDROID_PRODUCT_OUT 으로 찾아 갈수 있다.

그러나 여러개의 모델을 진행하다보면, 헷갈릴경우도 많고 환경변수값을 설정못했을 경우도 있다.

따라서 이경우에도 사용할수 있는 script를 만들었다. 간단한 alias이다.

function show_menu_do(){
## ---------------------------------------------------------------------------
# show the menu and make user select one from it.
local lines
#should be up one token
lines=($1)
if [[ ${#lines[@]} = 0 ]]; then
    echo "Not found"
    return 1
fi
local pathname
local choice
if [[ ${#lines[@]} > 1 ]]; then
    while [[ -z "$pathname" ]]; do
        local index=1
        local line
        for line in ${lines[@]}; do
            printf "%6s %s\n" "[$index]" $line
            index=$(($index + 1))
        done
        echo
        echo -n "Select one: "
        unset choice
        read choice
        if [[ $choice -gt ${#lines[@]} || $choice -lt 1 ]]; then
            echo "Invalid choice"
            continue
        fi
        pathname=${lines[$(($choice-1))]}
    done
else
    # even though zsh arrays are 1-based, $foo[0] is an alias for $foo[1]
    pathname=${lines[0]}
fi
 RET=$pathname
 return 0
}
 
function out(){
local INPUT
INPUT=$(find ~/ -maxdepth 3 -type d -name "out*" -exec \
find {}/target/product -mindepth 1 -maxdepth 1 -type d \; 2> /dev/null)
show_menu_do "$INPUT"
cd ${RET}
}

여기서 maxdepth 3은 root dir부터 dir depth 3 level 까지 out dir를 찾겠다는 뜻이다. 따라서 android root dir가 깊숙이 있는 분은 이 maxdepth를 늘려야 하지만, 너무 늘리면 script반응 속도가 느려지게 된다.
참고로, 여기서 show_menu_do는 결과를 list로 보여주는 명령이다. 

 

위의 명령을 이젠, .bashrc 파일에 넣어두자. 그런후 source .bashrc 를 실행시켜 running가능하게 만든후 out을 실행하면 된다.

> vi .bashrc
> source .bashrc
> out