./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” 开头的输入参数
2. @bopt = split(":", $2); // 以“:”分隔符将输入参数存入bopt这个数组中(eng 1sim gplusc)
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); //