Android编译
2023-07-23 22:13:01 0 举报
AI智能生成
android编译,查找代码
作者其他创作
大纲/内容
1、source build/envsetup.sh
2、lunch xxx
3、make -j12
编译准备
m: 在源码树的根目录执行编译
mm: 编译当前路径下所有模块,但不包含依赖
mmm [module_path] : 编译指定路径下所有模块,但不包含依赖
mma: 编译当前路径下所有模块,且包含依赖
mmma [module_path] : 编译指定路径下所有模块,且包含依赖
make [module_name] : 无参数,则表示编译整个Android代码
编译是增量编译,如果要全量编译加-B参数:make -B [module_name],或者 mm -B [module_path]
编译命令
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
部分模块编译指令
跳Android根目录
croot
只针对Android.mk
当前模块根目录
cproj
跳转到包含某个文件的目录
godir
目录返回
cd -
导航跳转
查询所有指令的帮助信息
hmm
findmakefile
print_lunch_menu
printconfig
gettop
gettargetarch
信息查询
更新API,Api记录在目录frameworks/base/api
make update-api
执行清理操作,等价于 rm -rf out/
make clean
其他
从c/c++文件搜索关键字
cgrep
从Java 文件搜索关键字
jgrep
从go文件中搜索
gogrep
从Gradle文件搜
ggrep
从manifest 文件搜
mangrep
从android.mk文件搜
mgrep
从se文件中搜
sepgrep
从本地res/*.xml 文件中搜
resgrep
所有资源文件中搜索
sgrep
上述所有指令+关键字
xgrep + key
代码搜索
1、系统核心的Make文件:定义了Build系统的框架,文件全部位于路径/build/core,其他Make文件都是基于该框架编写的
2、针对产品的Make文件:定义了具体产品的Make文件,文件路径位于/device,比如/device/qcom/msm8916
针对模块的Make文件:整个系统分为各个独立的模块,每个模块都一个专门的Make文件,名称统一为”Android.mk”
Makefile 三类
LOCAL_PATH := $(call my-dir) //设置当编译路径为当前文件夹所在路径
include $(CLEAR_VARS) //清空编译环境的变量(由其他模块设置过的变量)
LOCAL_SRC_FILES:当前模块包含的所有源码文件;
LOCAL_MODULE:当前模块的名称(具有唯一性)
LOCAL_PACKAGE_NAME:当前APK应用的名称(具有唯一性)
LOCAL_C_INCLUDES:C/C++所需的头文件路径
LOCAL_STATIC_LIBRARIES:当前模块在静态链接时需要的库名
LOCAL_SHARED_LIBRARIES:当前模块在运行时依赖的动态库名
LOCAL_STATIC_JAVA_LIBRARIES:当前模块依赖的Java静态库
LOCAL_JAVA_LIBRARIES:当前模块依赖的Java共享库
LOCAL_CERTIFICATE:签署当前应用的证书名称,比如platform
编译环境变量
$(call my-dir):获取当前文件夹路径
便捷函数
Android.mk解析
Android编译
0 条评论
回复 删除
下一页