출처 : http://blog.naver.com/shlee7708/120131974681
소개
envsetup.sh
는 Android build system에서 제공하는 shell script 함수 모음이다.사용 준비
Shell 상에서 다음과 같이 실행해주면 envsetup.sh 내에 정의된 여러 함수들이 현재 실행 중인 shell 환경으로 로드된다.
$ . $ANDROID_HOME/build/envsetup.sh
참고: envsetup.sh를 자주 사용하는 경우 위 내용을 .profile이나 .bashrc와 같은 설정 파일에 추가해주는 것도 좋을 것이다.
참고2:
$ANDROID_HOME
환경 변수는 반드시 미리 정의되어 있어야 하고, 그 내용은 Android full source root path이다.기본적인 사용 방법
많은 함수들이 제공되지만 주로 사용되는 몇 가지만 정리하면 다음과 같다.
주의: 거의 모든 함수는, 제대로 실행되기 위해서 shell 상의 현재 경로가 Android full source tree 아래의 어느 곳이어야 한다.
help 함수
Shell 상에서 help 라고 실행하게 되면 다음과 같이 간략한 도움말을 출력해준다.
$ help
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
Look at the source to view more functions. The complete list is:
add_lunch_combo cgrep check_product check_variant choosecombo chooseproduct choosetype choosevariant croot findmakefile
gdbclient get_abs_build_var get_build_var getbugreports getprebuilt gettop godir help isviewserverstarted jgrep lunch m mm mmm
pid print_lunch_menu printconfig resgrep runhat runtest runtest_py set_sequence_number set_stuff_for_environment setpaths settitle
smoketest startviewserver stopviewserver tapas tracedmdump
croot 함수
Android full source root directory로 이동한다. 아래의 예를 참고하자.
$ pwd
/home/fire/bin/mydroid/packages/apps/Email
$ croot
$ pwd
/home/fire/bin/mydroid
m, mm, mmm 함수들
Source에 대한 build를 도와주는 함수들이다.
- m - 현재 경로를 기준으로 소스 트리의 최상위 경로로 이동한 후 make를 실행해준다.
- 아래의 예에서 보면 Email application directory에서 Android full source root directory로 이동하여 make를 실행한 것을 알 수 있다.
- 참고: make 작업이 완료되면 다시 이전의 경로로 돌아오게 된다.
$ pwd
/home/fire/bin/mydroid/packages/apps/Email
$ m
make: Entering directory `/home/fire/bin/mydroid'
build/core/product_config.mk:261: WARNING: adding test OTA key
============================================
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=
============================================
... 생략 ...
make: Leaving directory `/home/fire/bin/mydroid'
$ pwd
/home/fire/bin/mydroid/packages/apps/Email
- mm - 현재 경로를 기준으로 가장 가까운 단위 모듈을 찾아서 그 모듈만 build 해준다.
- 아래 예에서는 Email application을 build한다.
$ pwd
/home/fire/bin/mydroid/packages/apps/Email
$ mm
make: Entering directory `/home/fire/bin/mydroid'
build/core/product_config.mk:261: WARNING: adding test OTA key
============================================
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=
============================================
... 생략 ...
make: Leaving directory `/home/fire/bin/mydroid'
$ pwd
/home/fire/bin/mydroid/packages/apps/Email
- mmm - 파라미터로 주어진 경로들에 대해 단위 모듈 build를 해준다. 마지막에 snod를 추가할 경우 System image 파일까지 새로 생성해준다.
- 아래 예에서는 Email과 Mms application을 build한 후 System image까지 새로 생성한다.
$ pwd
/home/fire/bin/mydroid/packages/apps
$ mmm Email Mms snod
make: Entering directory `/home/fire/bin/mydroid'
build/core/product_config.mk:261: WARNING: adding test OTA key
============================================
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=
============================================
... 생략 ...
make snod: ignoring dependencies
Target system fs image: out/target/product/generic/system.img
make: Leaving directory `/home/fire/bin/mydroid'
$ pwd
/home/fire/bin/mydroid/packages/apps
cgrep, jgrep, resgrep 함수들
각각 C/C++ source, Java source, Resource로부터 특정 문자열 패턴을 찾아준다. 아래의 예는 Java source들 중에서 "class Accounts"라는 문자열 패턴을 포함하는 부분을 찾은 결과이다.
$ pwd
/home/fire/bin/mydroid/packages/apps/Email
$ jgrep "class Accounts"
./src/com/android/email/activity/AccountShortcutPicker.java:96: class AccountsAdapter extends ArrayAdapter<Account> {
./src/com/android/email/activity/Accounts.java:54:public class Accounts extends ListActivity implements OnItemClickListener, OnClickListener {
./src/com/android/email/activity/Accounts.java:265: class AccountsAdapter extends ArrayAdapter<Account> {
godir 함수
파라미터로 넘겨준 이름을 포함하는 경로로 이동할 수 있게 도와준다.
경로가 여러 개일 경우 목록을 보여주고 번호로 선택할 수 있는 인터페이스를 제공한다.
$ pwd
/home/fire/bin/mydroid
$ godir Email/res
[1] ./packages/apps/Email/res/drawable
[2] ./packages/apps/Email/res/layout
[3] ./packages/apps/Email/res/layout-land
[4] ./packages/apps/Email/res/menu
[5] ./packages/apps/Email/res/values
[6] ./packages/apps/Email/res/values-cs
[7] ./packages/apps/Email/res/values-de
[8] ./packages/apps/Email/res/values-es
[9] ./packages/apps/Email/res/values-fr
[10] ./packages/apps/Email/res/values-it
[11] ./packages/apps/Email/res/values-ja
[12] ./packages/apps/Email/res/values-ko
[13] ./packages/apps/Email/res/values-nb
[14] ./packages/apps/Email/res/values-nl
[15] ./packages/apps/Email/res/values-pl
[16] ./packages/apps/Email/res/values-ru
[17] ./packages/apps/Email/res/values-zh-rCN
[18] ./packages/apps/Email/res/values-zh-rTW
[19] ./packages/apps/Email/res/xml
Select one: 1
$ pwd
/home/fire/bin/mydroid/packages/apps/Email/res/drawable
'개발 개발 > Android' 카테고리의 다른 글
adb를 wifi로 쓰기 (0) | 2012.03.27 |
---|---|
안드로이드의 부트 프로세스 (0) | 2012.03.14 |
LOCAL_MODULE_TAGS (0) | 2012.02.09 |
CTS 정리 (0) | 2011.12.20 |
임의로 Call stack(콜스택) 찍기 (0) | 2011.12.16 |