展讯智能机平台8810的编译脚本解析
./mk -o=eng:1sim:gplusc project_8810 u adr packages/apps/Contacts 这是一个编译apk的指令,先开个头,大致记录一下分析结果。 先从mk文件开始,mk就是一个perl文件了,里面的第一行: #!/usr/bin/perl -w??? //指定了perl解释器的存放位置 require "customize/perl/main.pl"; // include另外一个perl文件main.pl 在main.pl 中: 1.? $ARGV[0] =~ /^-(o|op|opt)=(.*)$/? //搜索“-o” 开头的输入参数 3.?? 遍历@bopt这个数组将eng/1sim/gplusc分别存入标量$mode/$sim/$gplusc??(eng/1sim是默认支持的option,gplusc是新增加的option) 4.???"project_8810"存入$project,? "u"存入$action,"adr packages/apps/Contacts"存入@input_module 5.?? &parse_custmake(${project});?? // 调用函数parse_custmake来检测customize/make/$project.mak是否存在 6.?? @acts = split(",",$action);?? //$action 可能是以“,”分隔的多个action,所以转换成数组@acts 7.?? $result = &act_convey(@acts,@cust_act); // 调用act_convey函数来将用户输入的简单参数转换成标准参数,比如将“u”转换为“update” 8.? 判断@input_module,?先匹配到“adr”,然后将 packages/apps/Contacts 存入 $CUR_MODULE_PATH 9.? gen_makeini(@acts);? // 根据@acts数组生成ini文件 10. &system_call("perl customize/perl/prebuild.pl? customize/make/${project}.mak?? 2>&1 | tee $logdir/${project}_prebuild.log");? // 如果($uAct eq "new") or ($uAct eq "update") ,那么就需要做prebuild操作 11. $result += &system_call("$makeCmd $uMod CUR_ACTION=$uAct CUR_MODULE=$uMod KMOD_PATH=$CUR_MODULE_PATH");? // 如果if($uAct =~ /(update|clean|packet)/i) 条件满足,即update某个模块,则执行make命令:$makeCmd = "make -f customize/make/makefile.sprd $cmdArg @mOpts"; make命令的目标是$uMod,在这里即为“android” 12.? 再往下就是到makefile.sprd执行 target=android的脚本了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |