一、编译指令

1.make -jX X表示数字,这个命令将编译Android系统并生成镜像,XX表示可以使用到的CPU核数,

2.make snod 这条命令将重新生成镜像,消耗的时间很少,类似WinCE的makeimg过程,如果你修改了一些数据文件(如音乐、视频)等文件时比较有用。

3.make cts 这条命令将编译CTS套机,编译出的结果放在out目录对应版的data/app目录下面。CTS测试时有用

4.make installclean 这条命令清除out目录下对应板文件夹中的内容,也就是相当于make clean,通常如果改变了一些数据文件(如去掉)、最好执行以下make installclean,否则残留在out目录下的还会被打包进去。

5.mm/mm -B 开发调试中最喜欢这条命令了,在修改了的目录下执行这条命令,就能智能地进行编译,输出的文件在通过adb推送到目标机,可以很方便地调试

二、单编

1. make: 不带任何参数则是编译整个系统; 
   make MediaProvider  #单个模块编译,会把该模块及其依赖的其他模块一起编译(会搜索整个源代码来定位MediaProvider模块所使用的Android.mk文件,还要判断该模块依赖的其他模块是否有修改); 
2.  mmm packages/providers/MediaProvider # 编译指定目录下的模块,但不编译它所依赖的其它模块; 
3.  mm  # 编译当前目录下的模块,它和mmm一样,不编译依赖模块; 
4.  mma # 编译当前目录下的模块及其依赖项 .

mmma:# 编译指定目录下的模块,编译它所依赖的其它模块; 

以上三个命令都可以用-B选项来重新编译所有目标文件。

  • make systemimage - system.img
  • make userdataimage - userdata.img
  • make ramdisk - ramdisk.img
  • make snod - 快速打包system.img 

单编sepolicy并快速验证
(1)source  bulid/envsetup.sh

(2)lunch  

(3)mmm system/sepolicy
(4)adb push out\..\vendor\etc\selinux\.  /vendor/etc/selinux
 adb push out\..\system\etc\selinux\.  /system/etc/selinux
(5)adb reboot

make  -j32 2>&1 | tee build.log 

模块                       make命令                                  mmm命令
init                          make init                                   mmm system/core/init
zygote                    make app_process                   mmm frameworks/base/cmds/app_process
system_server       make services                          mmm frameworks/base/services
java framework      make framework                       mmm frameworks/base
framework资源      make framework-res                 mmm frameworks/base/core/res
jni framework         make libandroid_runtime          mmm frameworks/base/core/jni
binder                    make libbinder                          mmm frameworks/native/libs/binder

make systemimage - system.img

make userdataimage - userdata.img

make ramdisk - ramdisk.img

make snod - 快速打包system.img 

三、push 文件

push 文件

adb push /xxx/system/etc/selinux/*  /system/etc/selinux/
adb push /xxx/vendor/etc/selinux/*  /vendor/etc/selinux/
adb push /xxx/system/system_ext/etc/selinux/*  /system/system_ext/etc/selinux/
adb push /xxx/system/product/etc/selinux/*  /system/product/etc/selinux/