envsetup.sh解析

 1 function hmm() {
 2   # 打印帮助信息
 3   cat <<EOF
 4   Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
 5   - lunch:   lunch <product_name>-<build_variant>
 6   - tapas:   tapas [<App1> <App2> ...] [arm|x86|mips|armv5|arm64|x86_64|mips64] [eng|userdebug|user]
 7   - croot:   Changes directory to the top of the tree.
 8   - m:       Makes from the top of the tree.
 9   - mm:      Builds all of the modules in the current directory, but not their dependencies.
10  - mmm:     Builds all of the modules in the supplied directories, but not their dependencies.
11             To limit the modules being built use the syntax: mmm dir/:target1,target2.
12  - mma:     Builds all of the modules in the current directory, and their dependencies.
13  - mmma:    Builds all of the modules in the supplied directories, and their dependencies.
14  - cgrep:   Greps on all local C/C++ files.
15  - ggrep:   Greps on all local Gradle files.
16  - jgrep:   Greps on all local Java files.
17  - resgrep: Greps on all local res/*.xml files.
18  - sgrep:   Greps on all local source files.
19  - godir:   Go to the directory containing a file.
20
21  Look at the source to view more functions. The complete list is:
22  EOF
23  # gettop是脚本内函数,功能:返回当前android代码树的顶层路径。前提是当前路径位于android代码树中
24      T=$(gettop)
25  # A变量 局部变量化
26      local A
27      A=""
28  # 查看envsetup.sh内容,且行首开始空格、制表符任意次,替换function为匹配的子串(函数名),按字符排升序、去掉重复
29      for i in `cat $T/build/envsetup.sh | sed -n "/^[ \t]*function /s/function \([a-z_]*\).*/\1/p" | sort | uniq`; do
30  # 替换出来的函数名 追加在A后 并打印
31        A="$A $i"
32      done
33      echo $A
34  }

envsetup.sh使用方法:

[email protected]:/work/android-5.0.2$ source build/envsetup.sh
including device/asus/deb/vendorsetup.sh
including device/asus/fugu/vendorsetup.sh
including device/asus/tilapia/vendorsetup.sh
including device/asus/flo/vendorsetup.sh
including device/asus/grouper/vendorsetup.sh
including device/samsung/manta/vendorsetup.sh
including device/friendly-arm/tiny4412/vendorsetup.sh
including device/lge/mako/vendorsetup.sh
including device/lge/hammerhead/vendorsetup.sh
including device/moto/shamu/vendorsetup.sh
including device/generic/mini-emulator-mips/vendorsetup.sh
including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh
including device/generic/mini-emulator-arm64/vendorsetup.sh
including device/generic/mini-emulator-x86/vendorsetup.sh
including device/generic/mini-emulator-x86_64/vendorsetup.sh
including sdk/bash_completion/adb.bash
[email protected]-virtual-machine:/work/android-5.0.2$ get_abs_build_var TARGET_PRODUCT
/work/android-5.0.2/full
时间: 2025-01-18 07:40:25

envsetup.sh解析的相关文章

Android编译系统详解(一)——build/envsetup.sh

本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 准备好编译环境后,编译Rom的第一步是 source build/envsetup.sh,该步骤把envsetup.sh里的函数声明为当前会话终端可用的命令.这些命令能让我们切换目录,提交代码,编译Rom更方便.如果记不住所有命令,只要你记住hmm就可以了,也可通过hmm命令看到支持的命令列表. 1. 命令分类: 1.1 编译用的命令 命令名称 使用方式 说明 breakfast 别名bib breakfast [produc

编译android源码报错:build/envsetup.sh: 1: Syntax error:

编译android源码时报错: build/envsetup.sh: 1: Syntax error: "(" unexpected 解决方法: 执行$sudo dpkg-reconfigure dash命令,并选择"否" 编译android源码报错:build/envsetup.sh: 1: Syntax error:

【转】Android source build/envsetup.sh学习笔记

原文网址:http://blog.csdn.net/mliubing2532/article/details/7567164 如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最后等待很长时间.使用模块编译,那只需要在你所在的模块的目录或者其子目录,执行mm,便可以编译出一个单独的apk,这样岂不快哉! build/envsetup.sh提供了几个有用的shell命令,使用$.build/envsetup.sh(注意点号)或者$sourcebuild/envsetup.sh 可以引

Android编译篇

Android的编译系统涉及面极广,包含编译工具.印像文件编译.SDK编译.NDK编译.目标系统配置等多个方面.尽管这些方面的内容烦琐而晦涩,能够參考的资料不多,可是系统设计尤其是系统架构人员必须熟悉它们. 1.源码编译 基于源码的方式进行开发,一般会依据目标环境的不同,对系统配置进行调整,如採用不同的引导器.特定的驱动.不同的文件系统.特定的属性配置等,这就要求开发人员必须熟练掌握源码的编译方法和配置. (1)映像文件 在编译完源码后.须要将生成的文件等打包成对应的文件系统.然后烧写到移动终端

Android系统源代码目录结构 “Android源代码”“目录结构”

在讲述Android源码编译的三个步骤之前,将先介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Android源代码的位置. Android源代码顶层目录结构如下所示: ├──abi #应用二进制接口,不同的操作系统,应用二进制接口不同,因此linux上的二进制可执行文件在windows上无法执行 ├──android #存放了一些xml文件,用于描述工程路径及其对应的远程仓库地址,repo工具将使用这些信息同步代码 ├──bionic #bionic C库,Andr

[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6.0的源码编译出来了,各种配置,各种error,各种爬坑,特写此博客记录爬坑经历.先上图,Ubuntu上编译完后成功运行模拟器,如图: 2 编译环境 UbuntuKylin 16.04 LTS Android 6.0_r1 Open JDK 7 3 准备工作 (1) 下载android 6.0源码.

Android.mk的用法和基础

一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个或多个模块.每个模块属下列类型之一:  1)APK程序,一般的Android程序,编译打包生成apk文件  2)JAVA库,java类库,编译打包生成jar文件  3)  C\C++应用程序,可执行的C\C++应用程序  4)C\C++静态库,编译生成C\C++静态库,并打包成.a文件  5)C\C

Android系统性能调优工具介绍

经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优工具介绍 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是: 测评:对系统进行大量有针对性的测试,以得到合适的测试数据. 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck). 性能优化:对hotspot相关的代码进行优化. 由上述步骤可知,性能优化的目标对象是hotspot.如果找到的hotspot并非真正的热点,则性能优化的结果必然是事倍

【转】Android Building System 总结 - 一醉千年 - CSDN博客

原文网址:http://www.360doc.com/content/15/0314/23/1709014_455175716.shtml Android Building System 总结 收藏 花了一个月的时间来看Android Make,在网上总是看到某某大虾说一天就把Android Make overview了一下,不得不感叹现在大虾的强大和咱那连蜗牛都可以鄙视一下的进度.不过总算是彻底看清的Android make这个系统,不得不当初架构出这套机制的神人顶礼膜拜一下,虔诚地烧三柱高香