Android(安卓)source build/envsetup.sh学习笔记
16lz
2021-01-26
Email: | [email protected] |
Blog | http://zcatt.cublog.cn |
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_PRODUCTcheck_product
检查指定的TARGET_PRODUCT是否允许,默认的有sim和generic。如果不允许,则输出错误信息,允许则无回显。 Usage: check_product <YourTargetProduct> Example: check_product genericcheck_variant
检查variant是否支持,支持则返回0,不支持则返回1。允许的variant列表定义在envsetup.sh中的 VARIANT_CHOICES中,默认是user,userdebug,eng。定制android时,可以在VARIANT_CHOICES中添加 vairant。 Usage: check_variant <YourVariant> Example: check_variant engsetpaths
奇次执行时,将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: setpathsprintconfig
输出类似如下形势的配置信息。 ============================================ 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-engtapas
用户给定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 Calendergettop
返回当前android代码树的顶层路径。前提是当前路径位于android代码树中。m
等价于在当前android代码树的顶层路径下执行make命令。findmakefile
查找当前或最接近自己的祖辈路径上的Android.mk,返回Android.mk的路径,假设当前路径处于android代码树中。mm
如果当前路径是代码树顶层,则mm相当于make。如果是深层,测mm相当于ONE_SHOT_MAKEFILE=$M make -C $T files [email protected]
$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 Calendarjgrep
同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 [email protected]
godir
给出一个词,godir会输出一个路径列表供用户选择要进入的路径。路径列表包含的路径满足,路径名中包含这个词,或这路径下的文件有文件名含这个词。out/路径下不考虑。 Usage: godir <YourKey> Usage: godir Calculatorset_java_home
设置JAVA_HOME环境变量为/usr/lib/jvm/java-6-sun。更多相关文章
- 转:Android(安卓)学习笔记 1
- *Android(安卓)多线程下载 仿下载助手(改进版)
- cocos2d-x 3.0rc2中读取sqlite文件
- android获取各种路径的方法
- android通过http上传文件(图片)
- Android(安卓)studio问题小记--- Cause: buildOutput.apkData mu
- 如何下载并编译Android内核源码goldfish(图文)
- AndroidStudio 放弃Gradle使用Android.mk
- Android(安卓)7.1 双卡双待机器,首选网络类型设置 详细分析