build/envsetup.sh简记

内容提要
文档简要整理Android的build/envsetup.sh中的命令。以供备忘和参考。
声明
仅限学习交流,禁止商业用途。转载需注明出处。
1. build/envsetup.sh
build/envsetup.sh提供了几个有用的shell命令,使用

$. build/envsetup.sh
可以引入到shell环境中。下面整理并简述。特别,envsetup.sh还同时会引入vendor/和device /目录下的vendorsetup.sh脚本。
help
显示帮助,列出提供的命令
get_abs_build_var
列出make脚本中某变量的值,前缀上当前路径。ref dumpvar.mk
使用方法:
get_abs_build_var VAR_NAME
VAR_NAME是需要显示的make脚本中的变量。
例如:
get_abs_build_var TARGET_PRODUCT
返回

<Your Android Root>\<VAR_NAME Value>
get_build_var
列出make脚本中某变量的值。ref dumpvar.mk
Usage:
get_build_var VAR_NAME
VAR_NAME是需要显示的make脚本中的变量。
Return:
<VAR_NAME Value>
Example:
get_abs_build_var TARGET_PRODUCT
check_product
检查指定的TARGET_PRODUCT是否允许,默认的有sim和generic。如果不允许,则输出错误信息,允许则无回显。
Usage:
check_product <YourTargetProduct>
Example:
check_product generic
check_variant
检查variant是否支持,支持则返回0,不支持则返回1。允许的variant列表定义在envsetup.sh中的 VARIANT_CHOICES中,默认是user,userdebug,eng。定制android时,可以在VARIANT_CHOICES中添加 vairant。
Usage:
check_variant <YourVariant>
Example:
check_variant eng
setpaths
奇次执行时,将ANDROID_BUILD_PATHS路径加到PATH中。偶次执行时,将ANDROID_BUILD_PATHS路径从 PATH中去除。ANDROID_BUILD_PATHS包括android编译中要使用到的路径,例如 ANDROID_EABI_TOOLCHAIN,ANDROID_TOOLCHAIN,ANDROID_QTOOLS,ANDROID_JAVA_TOOLCHAIN,ANDROID_PRODUCT_OUT 等等。

Usage:
setpaths
printconfig
输出类似如下形势的配置信息。
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=AOSP
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================
set_stuff_for_environment
依次调用settitle, set_java_home,setpaths,set_sequence_number。设置android编译需要的环境变量。
set_sequence_number
输出环境变量BUILD_ENV_SEQUENCE_NUMBER。
settitle
设置shell的prompt提示,PROMPT_COMMAND中加入TARGET_PRODUCT,TARGET_BUILD_VARIANT,和TARGET_BUILD_APPS等信息提示。
choosesim
配置环境变量TARGET_SIMULATOR。linux下会提示用户选择device或simulator。然后调用set_stuff_for_environment设置。
choosetype
配置环境变量TARGET_BUILD_TYPE_SIMULATOR。会提示用户选择release或debug。然后调用set_stuff_for_environment设置。
chooseproduct
配置环境变量TARGET_PRODUCT。会提示用户选择release或debug。然后调用set_stuff_for_environment设置。
choosevariant
配置环境变量TARGET_BUILD_VARIANT。会提示用户选择release或debug。
choosecombo
依次调用choosesim,choosetype,chooseproduct,choosevariant,set_stuff_for_environment配置,然后调用printconfig输出。
add_lunch_combo
向环境变量LUNCH_MENU_CHOICES标识的列表中添加项。envsetup.sh中默认添加了full-eng,full_x86-eng,和simulator。
print_lunch_menu
列出LUNCH_MENU_CHOICES中的所有选项。
lunch
点菜,用户选择/指定product,variant后,lunch命令设置环境变量 TARGET_PRODUCT,TARGET_BUILD_VARIANT,TARGET_SIMULATOR,TARGET_BUILD_TYPE,随后调用set_stuff_for_environment设置,并printconfig显示。
Usage:

lunch [<YourProduct>-<YourBuildVariant>]
不给参数时,将提示用户选择。

Example:
lunch
lunch generic-eng
tapas
用户给定variant和一个或多个app name,就是LOCAL_PACKAGE_NAME的名字。tapas设定
export TARGET_PRODUCT=generic
export TARGET_BUILD_VARIANT=$variant
export TARGET_SIMULATOR=false
export TARGET_BUILD_TYPE=release
export TARGET_BUILD_APPS=$apps
Usage:
tapas <YourVariant>? <YourAppName>*
?代表可选,*代表0个,1个或多个。YourVariant 和YourAppName的次序可颠倒。

Example:
tapas user Calculator Calender
gettop
返回当前android代码树的顶层路径。前提是当前路径位于android代码树中。
m
等价于在当前android代码树的顶层路径下执行make命令。
findmakefile
查找当前或最接近自己的祖辈路径上的Android.mk,返回Android.mk的路径,假设当前路径处于android代码树中。
mm
如果当前路径是代码树顶层,则mm相当于make。如果是深层,测mm相当于

ONE_SHOT_MAKEFILE=$M make -C $T files $@
$M是findmakefile发现的Android.mk,$T是代码树顶层路径,files是main.mk中定义的phony goal,就是完成$M对应目录范围内,所有android需编译的modules以及辅助说明txt文件。
mmm
给定package的路径,则mm会make相应的package。
例如,

mmm package/apps/Calculator
croot
改变当前路径到代码树顶层。
cproj
改变当前路径到最近的还有Android.mk文件的祖父辈路径。
pid
使用adb shell ps命令列出手机上指定名字的进程的pid。
Usage:
pid <YourName>
systemstack
使用kill -3system_server将系统进程中的线程信息写入/data/anr/traces.txt。
gdbclient
建立gdb调试环境,包括两步,手机上运行gdbserver,本机上运行arm-eabi-gdb。
Usage:
gdbclient <EXE> <PORT> <AppName>

EXE: AppName的执行名。
PORT:gdbserver的端口,例如, 192.168.2.102:5039
AppName:手机中ps列出的app名字,据此查pid。
sgrep
查找当前目录及子目录中所有.c,.h,.cpp,.S,.java,.mk,.xml,.sh文件,即源码文件中包含特定单词的行,并颜色显示输出。
Usage:
sgrep <YourWord>
Example:
sgrep Calendar
jgrep
同sgrep,但只查.java文件。
cgrep
同sgrep,但只查c相关的文件,即.c,.cc,.cpp,.h文件。
resgrep
同sgrep,但只查res相关的.xml文件。
mgrep
同sgrep,但只查make相关的脚本文件,包括Makefile文件,Makefile目录下的所有文件,.make文件,.mak文件和.mk文件。
treegrep
查找当前目录及子目录中所有.c,.h,.cpp,.S,.java,.xml文件,即源码文件中包含特定单词的行,并颜色显示输出。
getprebuilt
输出prebuilt的路径。
tracedmdump
生成dexlist文件qtrace.dexlit,dmtrace数据文件dmtrace,和调用dmtracedump工具生成的dmtrace解析文件dmtrace.html,将生成文件放到指定路径。
Usage:
tracedmdump <YourDirName>
如果YourDirName中不含’\’,则将放置的路径是$ANDROID_PRODUCT_OUT/traces/YourDirName。
runhat
貌似使用kill -10的方法得到heap dump并取到本地。使用hat以http方式展现出来。hat可能是个lightweight http server,不曾用过。
getbugreports
将手机/sdcard/bugreports目录下的文件下载到本地并压缩打包。
startviewserver
用指定端口启动viewserver。
Usage:
startviewserver <Port>
不指定端口,则默认4939。
stopviewserver
关闭viewserver。
isviewserverstarted
检查viewserver是否可用。
smoketest
编译smoketest并安装手机运行。
runtest

运行development/testrunner/runtest.py $@
godir
给出一个词,godir会输出一个路径列表供用户选择要进入的路径。路径列表包含的路径满足,路径名中包含这个词,或这路径下的文件有文件名含这个词。out/路径下不考虑。
Usage:
godir <YourKey>
Usage:
godir Calculator
set_java_home
设置JAVA_HOME环境变量为/usr/lib/jvm/java-6-sun。

2. 参考

1) Android Froyo Src

2) Internet etc


本文转自:http://blogold.chinaunix.net/u/8866/showart_2384920.html
Android by ZCATT
Email:zcatt@163.com Blog http://zcatt.cublog.cn

更多相关文章

  1. 导入android工程没有R文件的解决办法
  2. Android(安卓)易忘部分
  3. Mac 配置Android(安卓)studio 环境变量
  4. Android(安卓)开发技巧之Log写入文件
  5. Android(安卓)数据持久化方式
  6. Android去掉标题栏及崩溃问题
  7. Android(安卓)EventLog
  8. Android的Dialog开发和运用
  9. MonkeyRunner进坑——errors importing other modules

随机推荐

  1. android利用handler回到主线程
  2. android switch button 报 java.lang.Nul
  3. Android uses-permission大全
  4. android 自定义progressbar 样式
  5. Failed to load libGL.so in android
  6. android 制作输入法
  7. Android Studio使用总结
  8. android 应用在启动后进行全局的的初始化
  9. Android实现签名涂鸦手写板
  10. android webview 设置