查看原文
其他

Android系统和内核常用编译命令

云天实验室 哆啦安全 2022-08-17

1.删除out/目录下所有内容

make clean


2.删除所有配置所编译输出的结果文件

make clobber


3.PRODUCT_OUT展开为out/target/product/$(TARGET_DEVICE),根据注释,执行make dataclean将会删除out目录下对应板级目录中data分区相关文件

make dataclean


4.在切换编译目标时需要执行make installclean,用以清除之前编译生成的文件

make installclean


5.添加系统API或者修改@hide的API后,需要执行如下命令,然后再make

make update-api


6.修改公共API后,需要执行如下命令,然后再make

make update-api


7.分模块编译

(1).编译boot.img

make bootimage


(2).编译userdata.img

make userdataimage


(3).编译system.img

make systemimage


(4).重新打包system.img

make snod


(5).将App预装到系统中(需要预装的App是以源码形式提供,则需要先编译)

在源码根目录执行以下命令

source build/envsetup.sh

mmm packages/apps/TestApp

编译完成后,会在out/target/product/xxx/system/app/路径下生成对应的apk文件(xxx为设备代号),如果已经有apk文件则直接放在该路径下;如果是系统应用,则应放在out/target/product/xxx/system/priv-app/路径下,接下来需要重新打包成镜像文件,回到源码根目录,执行以下命令重新打包system.img

make snod


8.Linux内核make mrproper与make clean的区别

make mrproper命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令。


make clean命令则是用于删除大多数的编译生成文件,但是会保留内核的配置文件.config,还有足够的编译支持来建立扩展模块。所以若只想删除前一次编译过程的残留数据,只需执行make clean命令


make mrproper删除的范围比make clean大,实际上make mrproper在具体执行时第一步就是调用make clean



定制系统


内核交叉编译后未执行make mrproper进行清理,会导致Android系统源码编译时发生冲突而报错


make mrproper




ndk配置内核交叉编译环境(1)

内核交叉编译配置定制和编译(2)

内核篇加载内核模块(Android10)

内核系统调用openat Hook


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存