目的:
1、掌握系统的编译命令及不同命令之间的区别
2、学会怎么编译android系统中的原生模块
3、学会编译自己的程序模块(定制)
4、掌握用路径名称与模块名称进行模块的编译
定制的模块有两种:
● 可执行程序
● lib :
lib分动态库和静态库
思考问题:编译出来的模块放在哪里?out...
思考:如何再aosp代码证新增模块?然后编译这个模块
9.1android 系统下常见编译指令
hmm 帮助
mm 模块路径 编译当前目录下的所有模块,不包含依赖
mmm 模块路径 编译指定路径下的所有模块,不包含依赖
mma 模块路径 编译当前路径下的所有模块,且包含依赖
mmma 模块路径 编译指定路径下的所有模块,且包含依赖
含a的:包含依赖,不含a的不编依赖
前提:source build/envsetup.sh
lunch sdk_phone_x86_64-eng
9.2 android系统的常见模块编译指令
模块 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
jni framework make libandroid_runtime mmm frameworks/base/core/jni
SystemUI make SystemUI mmm frameworks/base/packages/SystemUI
总结:
什么是模块的名称:android.mk或android.bp文件中要编译出来的对象
● C++库:静态库libxxx.a 动态库libxxx.so
● Java库:***.jar
● C++可执行程序:
● JAVA app:
编译模块的两种方式:
make 模块名
mmm 模块名所在的路径
9.3 android系统下编译出来的文件存放位置 :
out/target/product/xxx/system/lib
out/target/product/xxx/system/lib64
out/target/product/xxx/system/bin
out/target/product/xxx/system/framework/framework.jar
out/target/product/xxx/vendor/lib
out/target/product/xxx/vendor/lib64
out/target/product/xxx/vendor/bin