`
cnetwei
  • 浏览: 173542 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

[转] build/envsetup.sh 脚本简记

阅读更多

本文转自:http://blogold.chinaunix.net/u/8866/showart_2384920.html

 

 

 

Android101103

build/envsetup.sh简记Android by ZCATT

Email:
zcatt@163.com
Blog
http://zcatt.cublog.cn
 
内容提要
文档简要整理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

分享到:
评论

相关推荐

    Android代码-Webrtc-for-Android

    Prerequisites: Make sure gclient is checking out tools necessary to target Android: your .gclient file should contain a line like: ... ./build/android/envsetup.sh Note that this clobbers any previo

    r58_evb_sc5806v4加载TP成功修改config 20160815 2026.7z

    rootroot@rootroot-E400:~/wyb/r58_evb_sc5806/lichee$ ./build.sh config Welcome to mkscript setup progress All available chips: 0. sun50iw1p1 1. sun8iw1p1 2. sun8iw3p1 3. sun8iw5p1 4. sun8iw6p1 5...

    android_local_manifest

    用于为小米 Mi2 构建 AOSP 的本地清单。 如何构建: 初始化仓库: repo init -u git://codeaurora.org/quic/la/platform/manifest -b release -m ... build/envsetup.sh lunch aries-userdebug make -jX otapackage

    android_manifest

    使用envsetup.sh脚本初始化ROM环境。 . build/envsetup.sh 如果需要,请在克隆所有设备源后为您的设备提供午餐。 lunch arrow_devicecodename-buildtype 开始编译 m otapackage 或者 m bacon 您还可以参考下面...

    刷机原理02 Android升级包update.zip的生成过程分析.wps

    Android升级包update.zip的生成过程分析1) 对于update.zip包的制作有两种方式,即手动制作和命令生成... build/envsetup.sh。 ②$ lunch 然后选择你需要的配置(如17)。 ③$ make otapackage。 ....................

    Local_Manifest:为 w5 构建 cm1112 的清单

    Local_Manifest 为 w5 构建 cm11 的清单 如何构建: 初始化构建环境: https://source.android.com/source/initializing.html 初始化仓库: ...repo sync vendor/cm/get-prebuilts ... . build/envsetup.sh bru

    android_device_lge_w55n:LG L65 D280n的CyanogenMod设备配置

    LG L65 D280n的CyanogenMod 12.1设备配置 如何建造: 初始化构建环境: https://source.android.com/source/initializing.html 初始化仓库: ...repo sync vendor/cm/get-prebuilts 编译: . build/envsetup.sh

    android_device_gionee_p4:金立先锋 P4 的 CyanogenMod

    # source build/envsetup.sh # lunch cm_rainbow-eng 回收率 # . build/tools/device/makerecoveries.sh cm_rainbow-eng # mka bootimage 完整构建 # brunch cm_rainbow-eng MTK 关于 mtk 相关二进制文件、...

    android_device_wiko_rainbow

    # source build/envsetup.sh # lunch cm_rainbow-eng 回收率 # . build/tools/device/makerecoveries.sh cm_rainbow-eng # mka bootimage 完整版 # brunch cm_rainbow-eng MTK 关于mtk相关二进制文件,服务和...

    Android源码-使用Android Studio 阅读Android Framework

    xx@xx:~/code/android_27$ source build/envsetup.sh 自动输出 including device/generic/mini-emulator-arm64/vendorsetup.sh including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh including d

    android_device_moto_mb526:摩托罗拉 Defy+ MB526 CM7.2 CM9 (umts_jordan)

    对于 CM10 分支:source build/envsetup.sh && brunch mb526 或对于 AOSP:源构建/envsetup.sh && 午餐 full_mb526-eng mka bacon 使用已签名的 zip 使用引导菜单恢复来更新 defy,而不是 ota 包! 链接: XDA ...

    android aosp编译可执行文件模板

    先source build/envsetup.sh,在lunch,然后mmm+目录

    platform_manifest:Resurrection Remix Android清单

    Resurrection Remix OS Q 2020 ... build/envsetup.sh # Choose a target $ lunch rr_ $device -userdebug # Build the code $ mka bacon 对于FOD设备很重要 For devices with in-display fingerprint, you ne

    android-ruby:安卓系统Ruby

    安卓系统Ruby现在支持纸杯蛋糕 (Android 1.5) irbapp.apk 包含 libruby.so /sdcard/ruby 中的其他 ... $TOP/build/envsetup.sh$ mm生成的文件 $TOP/out/target/product/generic/system/app/irbapp.apk pseudo irb app

    manifest:在制品

    XOSP源基本上无法启动,因此请不要弄脏手同步# Initialize local repositoryrepo init -u ... build/envsetup.sh# Choose a target$ lunch xosp_ $device -userdebug# Build the code$ mka bacon -jX申请维护不久以后

    manifest

    进化X同步# Initialize local repositoryrepo init -u ... build/envsetup.sh# Choose a target$ lunch evolution_laurel_sprout-userdebug# Build the code$ mka bacon -jX学分: =======

    RK3588-Android12环境搭建与版本编译下载文档

    RK3588_Android12环境搭建与版本编译下载, 1. 编译依赖库 apt-get install liblz4-tool apt-get install device-tree-compiler 将本目录下的lz4文件拷贝到/..../build.sh -AUCKu 3. 输出目录 rockdev\Image-rk3588_xr

    CWM-REC-V6.0.3.3-CHN:基于CWM V6.0.3.3的中文刷机系统-附加强化功能

    源代码build / envsetup.sh 做otatools 切换到工具目录,执行mkvendor。 SH 光盘构建/工具/设备 ./mkvendor.sh机器厂商机器型号boot.img其中目录 例如我将boot.img直接放到了tools下: ./mkvendor.sh华硕石斑鱼boot....

    device_samsung_starlte

    三星S9 aka starlte的TWRP设备树内核源可在如何建造经过测试,它与完全兼容。 按照说明设置构建环境在克隆的仓库的根文件夹中,您需要克隆... build/envsetup.sh && lunch omni_starlte-eng && mka recoveryimage -j128

Global site tag (gtag.js) - Google Analytics