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
导航跳转
croot
跳Android根目录
cproj
当前模块根目录
只针对Android.mk
godir
跳转到包含某个文件的目录
cd -
目录返回
信息查询
hmm
查询所有指令的帮助信息
findmakefile
print_lunch_menu
printconfig
gettop
gettargetarch
其他
make update-api
更新API,Api记录在目录frameworks/base/api
make clean
执行清理操作,等价于 rm -rf out/
代码搜索
cgrep
从c/c++文件搜索关键字
jgrep
从Java 文件搜索关键字
gogrep
从go文件中搜索
ggrep
从Gradle文件搜
mangrep
从manifest 文件搜
mgrep
从android.mk文件搜
sepgrep
从se文件中搜
resgrep
从本地res/*.xml 文件中搜
sgrep
所有资源文件中搜索
xgrep + key
上述所有指令+关键字
Makefile 三类
1、系统核心的Make文件:定义了Build系统的框架,文件全部位于路径/build/core,其他Make文件都是基于该框架编写的
2、针对产品的Make文件:定义了具体产品的Make文件,文件路径位于/device,比如/device/qcom/msm8916
针对模块的Make文件:整个系统分为各个独立的模块,每个模块都一个专门的Make文件,名称统一为”Android.mk”
Android.mk解析
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
LOCAL_MODULE_TAGS:当前模块所包含的标签,可以包含多标签,可能值为debgu,eng,user,development或optional(默认值)
便捷函数
$(call my-dir):获取当前文件夹路径
$(call all-java-files-under, ):获取指定目录下的所有Java文件
$(call all-c-files-under, ):获取指定目录下的所有C文件
$(call all-Iaidl-files-under, ) :获取指定目录下的所有AIDL文件
$(call all-makefiles-under, ):获取指定目录下的所有Make文件
0 条评论
下一页