====
[欢迎转载,保留链接] 安卓编译进阶<Android:boot art+oat>功能的打包与取消及追溯代码思路历程
####
====
导读:
####
之前接手了新平台,是5.x版本的系统,可以说算是很旧的了,2015年出品就用过,不过跳转产品后系统变得很旧,多数时间还是kitkat的,这个有行业的准则影响;
发现本题目,是因为在更改FW的时候,居然没有正常的android.policy.jar生成,故此追溯代码,做个基本的小研究,更深入的了解编译的局部原理;
****
====
首先,用如下命令导入shell环境变量的配置(. ./build/envsetup.sh 亦可)并编译安卓全局项:
source ./build/envsetup.sh && lunch aosp_xxx-userdebug && make propclean / installclean && make -j8
编译说明:
make -j8 -- 抛出八个线程并行编译,可以有效利用CPU/DDR性能,如果不知道合适的参数,可以用-j,系统会根据硬件配置自动匹配最佳的,但太多了会较卡,普通电脑推荐-j4,服务器-j8;
make propclean -- propclean是用来删除build.prop的快捷方法,不必寻找target做匹配;
make installclean -- propclean是用来删除system的,某些需要删除才能强制更新的文件,需求执行此步骤,如/system/etc下面的配置文件等;
一般来说编译完整个安卓后,才能比较好的做局部调试,原因是安卓各个部件之间可能存在依赖关系,比如out/target/product目录下面大部分都需要out/host/的工具支持:
ls -d out/target/*
out/target/common out/target/product
ls -d out/host/*
out/host/common out/host/linux-x86 out/host/windows-x86
还有一些是需要依赖于下面路径的资源
ls -d out/target/product/xxx/system/framework/*.apk
out/target/product/xxx/system/framework/framework-res.apk
(当然,完整编译很耗时,每次切换环境都很麻烦,有精力可以做提取,只要保证基本的依赖组件是完整存在)
然后,以上准备完成,才进入今天的主题。
mmm -B ./frameworks/base/policy/
####
cd ./frameworks/base/policy/
mm -B
****
简单介绍一下,
[欢迎转载,保留链接] 安卓编译进阶<Android:boot art+oat>功能的打包与取消及追溯代码思路历程
####
http://blog.csdn.net/rancec/article/details/77450450
====
导读:
####
之前接手了新平台,是5.x版本的系统,可以说算是很旧的了,2015年出品就用过,不过跳转产品后系统变得很旧,多数时间还是kitkat的,这个有行业的准则影响;
发现本题目,是因为在更改FW的时候,居然没有正常的android.policy.jar生成,故此追溯代码,做个基本的小研究,更深入的了解编译的局部原理;
****
====
####
一、
首先,用如下命令导入shell环境变量的配置(. ./build/envsetup.sh 亦可)并编译安卓全局项:
source ./build/envsetup.sh && lunch aosp_xxx-userdebug && make propclean / installclean && make -j8
编译说明:
make -j8 -- 抛出八个线程并行编译,可以有效利用CPU/DDR性能,如果不知道合适的参数,可以用-j,系统会根据硬件配置自动匹配最佳的,但太多了会较卡,普通电脑推荐-j4,服务器-j8;
make propclean -- propclean是用来删除build.prop的快捷方法,不必寻找target做匹配;
make installclean -- propclean是用来删除system的,某些需要删除才能强制更新的文件,需求执行此步骤,如/system/etc下面的配置文件等;
一般来说编译完整个安卓后,才能比较好的做局部调试,原因是安卓各个部件之间可能存在依赖关系,比如out/target/product目录下面大部分都需要out/host/的工具支持:
ls -d out/target/*
out/target/common out/target/product
ls -d out/host/*
out/host/common out/host/linux-x86 out/host/windows-x86
还有一些是需要依赖于下面路径的资源
ls -d out/target/product/xxx/system/framework/*.apk
out/target/product/xxx/system/framework/framework-res.apk
(当然,完整编译很耗时,每次切换环境都很麻烦,有精力可以做提取,只要保证基本的依赖组件是完整存在)
然后,以上准备完成,才进入今天的主题。
mmm -B ./frameworks/base/policy/
====
二、
mmm -B ./frameworks/base/policy/####
cd ./frameworks/base/policy/
mm -B
****
简单介绍一下,