您的位置:首页 > 产品设计 > UI/UE

build/envsetup.sh

2016-05-12 14:56 555 查看
此脚本文件主要是在编译模块前用来加载编译过程中用到的命令、环境变量,包括一些基本函数,配置编译工具和路径,查找一些vendorsetup.sh文件并执行

function setpaths()
function m()
function mm()
function mmm()
function lunch()
function jgrep()
function cgrep()
function resgrep()


一、初始化编译环境

1、在根目录下执行
source build/envsetup.sh


2、选择一个编译项
lunch
,列举一项,此项编译成eng版本

full_rlk6735_65t_c_m0-eng


full表示目标设备为Android的模拟器,官方解释为:fully configured with all languages,apps, input methods,全部的应用程序及语言,输入法等。后半部分eng表示带有调试功能的工程机。rlk6735_65t_c_m0是目标产品名字(target product),eng是编译类型(variant)。

3、编译单独模块
mmm packages/apps/Dialer/


二、编译命令(要有Android.mk文件)

m 在当前代码树的顶层路径执行make命令,不管哪层路径都可以执行此命令

function m()
{
local T=$(gettop)
local DRV=$(getdriver $T)
if [ "$T" ]; then
$DRV make -C $T -f build/core/main.mk $@
else
echo "Couldn't locate the top of the tree.  Try setting TOP."
return 1
fi
}


mm 在当前路径下执行make命令,当前路径如果是顶层,相当于全编,不包括它们的依赖文件

mmm 编译指定路径的全部文件,不包括它们的依赖文件(mmm packages/apps/Dialer/),用Tab键可以补全路径名称。

如果修改了资源文件,要加参数-B强制编译

mmm -B packages/apps/Dialer/


如果要单独编译某个模块

mmm packages/apps/Dialer:Dialer


不论采用何种编译方式,编译成功后都有如下类似日志

Install: out/target/product/rlk6580_we_c_m/system/priv-app/Dialer/Dialer.apk

建议使用mmm方式分模块编译,如果使用mm方式编译,就会删除system.img、ramdisk.img、userdata.img等IMG镜像文件,之后还用重新编译全部代码生成这些文件,非常耗时。

三、linux grep命令

grep:Global Regular Expression Print,表示全局正则表达式版本,用来进行文本搜索

jgrep:在java文件进行文本搜索

function jgrep()
{
find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f -name "*\.java" -print0 | xargs -0 grep --color -n "$@"
}


cgrep:在c/cpp/cc/h/hpp文件进行文本搜索

resgrep:在xml文件进行文本搜索,例如
resgrep 'xxx'
或者
resgrep "xxx"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: