안드로이드 빌드 질문을 찾아봤지만, 없네요.;
쉘스트립트로 안드로이드 풀빌드를 해왔는대요
무작정 따라한 거라.. 쉘스크립트 해석을 해봤습니다.
근대 모르는 부분들이 많아서 질문 드립니다!
#!/bin/bash
#PRODUCT='hkdkc100'
PRODUCT='generic'
LOGFILE=froyo_2.2_r1.1_build.log //컴파일 과정 log저장
. build/envsetup.sh
choosecombo 1 1 $PRODUCT 3 //순서대로 device에 대해 , release용으로, $PRODUCT=generic용으로, 3=타입(eng?)
#make clean //기존의 것은 비운다
rm -f $LOGFILE
CPU_JOB_NUM=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}')
CLIENT=$(whoami)
ROOT_DIR=$(pwd)
function check_exit()
{
if [ $? != 0 ]
then
exit $?
fi
}
function build_android()
{
echo
echo '[[[[[[[ Build android platform ]]]]]]]'
echo
START_TIME=`date +%s`
if [ $PRODUCT = "generic" ]
then
echo make -j$CPU_JOB_NUM
echo
make -j$CPU_JOB_NUM 2>&1 | tee $LOGFILE
else
echo make -j$CPU_JOB_NUM PRODUCT-$PRODUCT-eng
echo
make -j$CPU_JOB_NUM PRODUCT-$PRODUCT-eng 2>&1 | tee $LOGFILE //에러내용만 $LOGFILE에 기록
fi
check_exit
END_TIME=`date +%s`
let "ELAPSED_TIME=$END_TIME-$START_TIME"
echo "Total compile time is $ELAPSED_TIME seconds"
}
echo
echo ' Build android for '$PRODUCT''
echo
#
# delete folder : /out/target/product/smdkc100/ root, data, system
#
rm -rf out/target/product/$PRODUCT/root
rm -rf out/target/product/$PRODUCT/data
rm -rf out/target/product/$PRODUCT/system // delete folder라 하는데 왜 지우는지?
sync
#
# build android script
#
build_android
#
# make root file system
#
mkdir -p ./rootfs
rm -rf ./rootfs/*
cp -a out/target/product/$PRODUCT/root/* ./rootfs
cp -a out/target/product/$PRODUCT/data ./rootfs
cp -a out/target/product/$PRODUCT/system ./rootfs //빌드된후의 filesystem을 뭉쳐 넣기 ?
cp -a ./rootfs_base/* ./rootfs //전체적으로 루트fs을 만든다는데 어떠한 개념인지..
sync
#
# deleted .svn folder
#
cd rootfs
find . -type d -name .svn -print0 | xargs -0 rm -rf
find . -type d -name .git -print0 | xargs -0 rm -rf
chmod 777 -R *
sync
#
# make tarball
#
tar cfz froyo_rootfs.tar.gz *
sync
echo ok success !!!
exit 0
아아..ㅠㅠ 고수님들 도와주세여,
제가 궁금한 부분은요, build android script 부분 이후 부터 입니다!
root file system에 대해서 알려주세요~