系统定制-如何进行“模块编译”

编译命令

不同编译命令区别

首先需要了解不同编译命令的区别:

编译指令解释
m在源码树的根目录执行编译
mm编译当前路径下所有模块,但不包含依赖
mmm [module_path]编译指定路径下所有模块,但不包含依赖
mma编译当前路径下所有模块,且包含依赖
mmma [module_path]编译指定路径下所有模块,且包含依赖
make [module_name]无参数,则表示编译整个Android代码

模块示例

模块命令make命令mmm命令
initmake initmmm system/core/init
zygotemake app_processmmm frameworks/base/cmds/app_process
system_servermake servicesmmm frameworks/base/services
java frameworkmake frameworkmmm frameworks/base
framework资源make framework-resmmm frameworks/base/core/res
jni frameworkmake libandroid_runtimemmm frameworks/base/core/jni
bindermake libbindermmm frameworks/native/libs/binder

特别注意

在模块编译后,需要执行make snod写入镜像,不然修改代码可能不会生效。

如何判断哪些代码可以模块编译

很简单,在文件夹目录里有Android.mk或者Android.bp文件,就表示这个文件夹代码可以模块编译。

编译完成后查看修改

模块编译完成后,根据编译的不同模块,会在out/target/product/xxxxxxx/system这个临时目录里生成对应名称的APK,一般在priv-app文件夹里,也会有部分生成的jar文件在framework文件夹里。

这里只以APK文件举例,复制出APK文件,put进设备的system/priv-app/xxxx文件夹内(xxxx为对应文件夹),举例编译出Launcher.apk,然后执行adb push xxxxxx(复制出来的APK路径) /system/priv-app/Launcher

需注意设备得取得root权限,才能put进这样的系统目录内。

如果设备已经ROOT后,依次执行adb root adb remount 获得权限,然后就可以执行put命令啦。

参考文章

https://blog.csdn.net/asahinokawa/article/details/79528698

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值