Android编译系统Makefile
编译系统Makefile
Android平台的编译系统,其实就是用Makefile写出来的一个独立项目。它定义了编译的规则,实现了“自动化编译”,不仅把分散在数百个Git库中的代码整合起来、统一编译, 而且还把产物分门别类地输出到一个目录,打包成手机ROM,还可以生成应用开发时所使用的SDK、NDK等。
因此,采用Makefile编写的编译系统,也可以称为Makefile编译系统。
相关概念
Android.mk、Ninja、Soong、Blueprint、kati、Android.bp的概念之间的联系为:
Android.mk
Makefile编译系统的一部分,定义了一个模块的必要参数,使模块随着平台编译。通俗来讲就是告诉编译系统,以什么样的规则编译你的源代码,并生成对应的目标文件。Ninja
Ninja是一个致力于速度的小型编译系统,如果把其他的编译系统看作高级语言,那么Ninja 目标就是汇编。Soong
Soong是谷歌用来替代此前的Makefile编译系统的替代品,负责解析Android.bp文件,并将之转换为Ninja文件Blueprint
Blueprint用来解析Android.bp文件翻译成Ninja语法文件。kati
kati是谷歌专门为了Android而开发的一个小项目,基于Golang和C++。 目的是把Android中的Makefile,转换成Ninja文件。Android.bp
Android.bp,是用来替换Android.mk的配置文件。
源码整编
- 初始化环境:
source build/envsetup.sh
- 选择编译目标:
lunch
编译目标的格式组成为BUILD-BUILDTYPE,比如aosp_arm-eng的BUILD为aosp_arm,BUILDTYPE为eng。
BUILD表示编译出的镜像可以运行在什么环境,aosp代表Android开源项目,arm表示系统是运行在arm架构的处理器上。
BUILDTYPE 指的是编译类型,有以下三种:
user:用来正式发布到市场的版本,权限受限,如没有 root 权限,不能 dedug,adb默认处于停用状态。
userdebug:在user版本的基础上开放了 root 权限和 debug 权限,adb默认处于启用状态。一般用于调试真机。
eng:开发工程师的版本,拥有最大的权限(root等),具有额外调试工具的开发配置。一般用于模拟器。
如果你没有Nexus设备,只想编译完后运行在模拟器查看,那么BUILD可以选择aosp_x86,BUILDTYPE选择eng
- 编译命令
mm:编译当前目录下的模块,不编译它所依赖的其它模块。
mma:编译当前目录下的模块及其依赖项。
mmm:编译指定目录下的模块,不编译它所依赖的其它模块。
mmma:编译指定路径下所有模块,并且包含依赖。
make clobber和make clean —> rm -rf out/
make systemimage和make snod
- 生成镜像
system.img:系统镜像,里面包含了Android系统主要的目录和文件,通过init.c进行解析并mount挂载到/system目录下。
userdata.img:用户镜像,是Android系统中存放用户数据的,通过init.c进行解析并mount挂载到/data目录下。
ramdisk.img:根文件系统镜像,包含一些启动Android系统的重要文件,比如init.rc。
相关参考
http://liuwangshu.cn/framework/aosp/3-compiling-aosp.html
Android编译系统Makefile相关推荐
- 【转载】Android编译系统Makefile(Android.mk)写法
声明:本文转载自http://www.cnblogs.com/hesiming/archive/2011/03/15/1984444.html 版权和最终解释权给原作者所有,谢谢. android编译 ...
- 【Android.mk】android编译系统makefile文件Android.mk的写法
(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件.由于一般情况下 Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式: LOCAL_PATH:=$ ...
- android编译系统学习 .
android的编译文件主要依赖于mk文件,其源码编译名字是Android.mk,而不我们常见的Makefile文件. android目录下的Makefile文件,include了build/core ...
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)...
第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...
- Android编译系统入门(二)
Android.mk的使用方法 在上一篇Android编译系统入门(一)中我们只要介绍了Android系统使用make命令默认编译的依赖树是droid,而droid是一个伪目标,它有两个先决条件dro ...
- Android编译系统简要介绍和学习计划
在Android源码环境中,我们开发好一个模块后,再写一个Android.mk文件,就可通过m/mm/mmm/make等命令进行编译.此外,通过make命令还可制作各种系统镜像文件,例如system. ...
- Android系统(138)--- Android编译系统
android编译系统分析 1:source build/envsetup.sh与lunch 虽然已经有很多人分析过android的编译系统的代码了,我也看过他们的博客,也学到了不少知识,但单纯的看别 ...
- Android编译默认英语,Android 编译系统 (一)
1.Makefile & Android build system 在进行讲述Android编译系统之前,应该先了解一下编译时所使用的Makefile,或者说复习下这方面的知识,这样才能更好的 ...
- android.bp 编译,Android编译系统中的Android.bp
Android.bp,是用来替换Android.mk的配置文件. 它使用Blueprint框架来解析,最终转换成Ninja文件. 与Android.mk不同的是,Android.bp是纯粹的配置文件, ...
最新文章
- 【opencv】7. cv::VideoWriter的使用,把图片写进video
- Bug接口地址找不到
- Excel2007数据透视表学习(四)改变数据透视表布局
- vue将经纬度转换成地理名称_新武汉北,红安有了一个新的地理名称,恒大项目将对标上海迪士尼...
- 通过filebeat、logstash、rsyslog采集nginx日志的几种方式
- 百度C2C对决淘宝的两把利器
- LeetCode之同构字符串
- HDU 4919 打表找规律 java睑板 map 递归
- 高质量图片缩略图生成(编程笔记)
- 高性能mysql之慎用BLOB与TEXT
- Python福彩3D单选单复式排列计算器
- 矩阵的秩(Rank)
- rufus linux 教程,图文回复rufus使用教程【操作步骤】
- 568A和568B的线序
- ASP.NET(C#)对接国际验证码接口DEMO示例
- Java实现HighCharts纯后台图表生成
- 大物复习整理(自用)
- 做领导要会说话!高情商的18个说话技巧,受益无穷!
- 51nod 1479 小Y的数论题
- 数学建模拿到题目时思路
热门文章
- 实现Dart版本对象存储(COS)插件
- linux namp使用教程,nmap教程之nmap命令使用示例(nmap使用方法)
- 马化腾确认微信推出公众号付费阅读功能
- 用css画圆的长度固定的1/4边
- 蓝桥秘密冲刺计划(10.3)史丰收速算
- wav格式怎么转换?介绍三个转换wav格式的方法
- 用python分析HTTP请求中各过程用时情况(通过分析抓包文件pcap实现)
- cygwin下面编译proxmark3(at 2015.09.09)
- php 路由实现_php实现路由接口 | ZJINH-Blog
- prefetch 和preload_Preload和Prefetch以及前端项目中的配置