去掉纠错检查,加快编译速度的方法

备份下,编译时候可以试试

Local Module
      本地模块的Makefile文件就是我们在Android里面几乎上随处可见的Android.mk。Android进行编译的时候会通过下面的函数来遍历所有子目录中的Android.mk,一旦找到就不会再往层子目录继续寻找(所有你的模块定义的顶层Android.mk必须包含自己定义的子目录中的Android.mk)。
    

Java代码
  1. subdir_makefiles += \ 
  2.          $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk) 
 subdir_makefiles += \
          $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk)
       不同类型的本地模块具有不同的语法,但基本上是相通的,只有个别变量的不同,如何添加模块在前面的帖子已经说过了,大家可以参考。
       Android通过LOCAL_MODULE_TAGS来决定哪些本地模块会不会编译进系统,通过PRODUCT和LOCAL_MODULE_TAGS来决定哪些应用包会编译进系统,如果用户不指定LOCAL_MODULE_TAGS,默认它的值是user。此外用户可以通过buildspec.mk来指定你需要编译进系统的模块。
       用户也可以通过mm来编译指定模块,或者通过make clean-module_name来删除指定模块。
       4、Package
       这主要指的是build/core/Makefile这个文件,它定义了生成各种img的方式,包括ramdisk.img   userdata.img  system.img  update.zip  recover.img等。我们可以看看这些img都是如何生成的,对应着我们常用的几个make goals:



在实际的过程中,我们也可以自己编辑out目录下的生成文件,然后手工打包相应生成相应的img,最常用的是加入一些需要集成进的prebuilt file。
      
       所有的Makefile都通过build/core/main.mk这个文件组织在一起,它定义了一个默认goals:droid,当我们在TOP目录下敲Make实际上就等同于我们执行make droid。当Make include所有的文件,完成对所有make我文件的解析以后就会寻找生成droid的规则,依次生成它的依赖,直到所有满足的模块被编译好,然后使用相应的工具打包成相应的img。

       基本上Android building system就是以这样一种方式组织在一起的了,下面说一点闲散的东西。首先是如何来加快Android的编译过程,因为每次Android都要遍历所有的Android.mk,不管是编译整个工程还是只编译某个模块。所以可以将遍历的结果保存下来,下次直接从文件读就好了,但是这里容易出错,所以一定要确认是否正确包含了所有的.mk,当新加入文件的时候确认将原来保存的文件删除。下面是我写的加快编译的一个makefile,将下面的语句替换掉 main.mk中的相应部分就可以了:
      
Java代码
  1. FROM: 
  2.        subdir_makefiles += \ 
  3.            $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk) 
  4.        TO: 
  5.        ifneq ($(ONE_SHOT_MAKEFILE),) 
  6.        else 
  7.        ifneq ($(CASH_MK),true
  8.        subdir_makefiles += \ 
  9.            $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk) 
  10.       else 
  11.      subdir-makefiles-cash := $(shell cat build/subdir_mk_cash) 
  12.      ifeq ($(subdir-makefiles-cash),) 
  13.      $(warning No .mk cash ,create now !) 
  14.      subdir_makefiles += \ 
  15.            $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk) 
  16.      mk-to-file := $(shell echo $(subdir_makefiles) > build/subdir_mk_cash)  
  17.      else 
  18.     $(warning Using cash mk !) 
  19.     subdir_makefiles := $(shell cat build/subdir_mk_cash) 
  20.     endif 
  21.     endif 
  22.     endif 
  23.         
FROM:
       subdir_makefiles += \
           $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk)
       TO:
       ifneq ($(ONE_SHOT_MAKEFILE),)
       else
       ifneq ($(CASH_MK),true)
       subdir_makefiles += \
           $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk)
      else
     subdir-makefiles-cash := $(shell cat build/subdir_mk_cash)
     ifeq ($(subdir-makefiles-cash),)
     $(warning No .mk cash ,create now !)
     subdir_makefiles += \
           $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk)
     mk-to-file := $(shell echo $(subdir_makefiles) > build/subdir_mk_cash) 
     else
    $(warning Using cash mk !)
    subdir_makefiles := $(shell cat build/subdir_mk_cash)
    endif
    endif
    endif
       
通过CASH_MK=true来打开快速编译的功能,因为没有对错误进行检测的操作,所以使用的时候一定要特别小心。

       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值