Android4.4编译系统介绍Version:1.6Date:2014-04-14重要声明版权声明本文档中的任何内容受《中华人民共和国著作权法》的保护,版权所有©2010,展讯通信有限公司,保留所有权利,但注明引用其他方的内容除外。商标声明展讯通信有限公司和展讯通信有限公司的产品是展讯通信有限公司专有。在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。不作保证声明展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。保密声明本文档(包括任何附件)包含的信息是保密信息。接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。前言文档说明本文档简要介绍了展讯公司Android4.4平台的编译系统及其使用方法。阅读对象本文档针对于所有展讯公司Android4.4平台客户软件工程师。内容介绍本文档包括三个章节,分别为:第一章:编译方法介绍第二章:新建工程和配置介绍第三章:其他相关配置文档约定本文档采用下面醒目标志来表示在操作过程中应该特别注意的地方。注意:提醒操作中应注意的事项。相关文档A-1目录第1章代码编译的方法..................................................................................................................................1-21.1代码和编译环境的准备....................................................................................................................1.1-21.2完成一次全新的编译........................................................................................................................1.2-31.3单项编译和其它编译命名................................................................................................................1.3-51.4编译的成果.........................................................................................................................................1.4-6第2章新建和配置一个项目.........................................................................................................................2-92.1新建项目编译配置文件....................................................................................................................2.1-92.2配置新项目的kernel部分...........................................................................................................2.2-102.3配置新项目的u-boot部分...........................................................................................................2.3-112.4添加新项目的产品信息配置..........................................................................................................2.5-12第3章其它编译相关的内容.......................................................................................................................3-143.1OTA包的编译....................................................................................................................................3.1-143.2如何制作多国语言版本..................................................................................................................3.2-14附录ARevisionHistory...........................................................................................................................A-15Android4.4编译系统介绍第1章代码编译的方法1.1代码和编译环境的准备首先,客户需要解压完整的平台代码包,代码包由CPM向客户进行发布,其中包含代码,bin档和开发调试工具等。其中AP侧代码由开源代码包和非开源库文件两部分组成开源代码包部分一般命名为idh.code,以rar或者tgz压缩格式提供非开源库文件一般以proprietories-平台名来命名,以rar或者tgz压缩格式提供客户解压之后,需要将库文件的内容拷贝到代码包的vendor/sprd/proprietories/目录下,如果客户在同一个版本下开发多个平台的项目,则需要将各个平台对应的库文件解压后都拷贝到该目录下,这样就完成了平台代码环境的准备然后,客户还需要检查自己的编译环境,google推荐使用64位ubuntu的系统。展讯推荐11.04的版本。10.04,10.10,11.10,12.04等版本也可以使用,可以使用lsb_release-a命令来查看ubuntu的具体版本号需要安装1.6版本的jdk,可以在google或者sun的官方网站获得对应的java支持,可以使用java–version命令来查看jdk的版本Google推荐的python版本是2.6或者2.7,可以在python.org获得,可以使用python--version来查看python的版本根据ubuntu版本的不同,可能还需要一些其它的编译支持工具,完整的工具包在下面的网址可以找到如果是11.04的版本,可以在用下面的命令安装支持$sudoapt-getinstallgit-coregnupgflexbisongperfbuild-essentialzipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libsx11proto-core-devlibx11-devlib32readline5-devAndroid4.4编译系统介绍lib32z-devlibgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\libxml2-utilsxsltproc在完成的代码和编译环境的准备之后,就可以开始进行代码的编译工作了1.2完成一次全新的编译在完成了代码环境的准备后就可以进行一个完整的编译了,当然,客户也可以选择在完成自定义项目配置之后再开始编译,但是我们还是建议不熟悉展讯环境的客户在准备好代码之后先进行一次默认项目的编译通过ubuntu终端命令行工具进入代码的根目录,默认的代码根目录是idh.code首先执行sourcebuild/envsetup.sh这一步将读取各个项目的编译配置文件,然后执行lunch此时终端会显示出所有被配置过的项目的列表,如下图所示Android4.4编译系统介绍输入对应的数字选择需要编译的项目,目前展讯Android4.4上的参考项目是sp7715ea(Dolphinemmc方案)或者sp7715ga(Dolphinnand方案),而base或plus关键字分别代表单卡或者双卡方案。这里建议客户选择最接近自己项目形态的参考项目。在选择完编译项目后,使用make命令来进行编译,如果编译使用的机器是支持多线程编译的,则可以使用-j选项来加快编译的速度,比如Android4.4编译系统介绍make–j24-j之后的数值由编译电脑的cpu数决定。一次全新的编译根据编译服务器的性能大约需要几十分钟到几个小时不等。1.3单项编译和其它编译命名在完成一次全编之后,在不改变当前编译项目的前提下,修改代码后可以使用单项的编译来编译对应的部分,加快开发的速度。注意:如果新打开了终端窗口,则必须重新执行source和lunch的操作选择编译项目各个部分的编译命令如下单独编译u-bootmakebootloader单独编译fdl1和uboot-16kmakechipram单独编译bootimagemakebootimage单独编译systemimagemakesystemimage单独编译userdataimagemakeuserdataimage我们还可以单独编译android的每一个模块,比如单独编译一个apk,一个java或者本地库或者本地程序,这时我们需要进入到对应模块的Android.mk所在的目录,执行mm指令,比如需要重新编译”设置”这个apk,我们就需要这样做cdpackages/apps/Settings/mm这样被单独编译出来的模块可以通过adbpush的方式推入调试手机进行使用,使调试阶段被经常使用到的方式。Android4.4编译系统介绍注意:ramdisk(手机根目录或者/bin目录)中的文件不建议使用adbpush,需要重新下载bootimage1.4编译的成果Android的编译输出路径为out,编译成果如下图Android4.4编译系统介绍其中最重要的目录就是out/target/product/项目名,这里存放着用于下载的所有bin和image文件,包括fdl1.binfdl2.binu-boot-spl-16k.binu-boot.binboot.imgsystem.imgusderdata.imgrecovery.imgcache.img。注意:并非所有的下载用文件都是编译生成的,比如cp侧的bin就是在版本发布中直接提供Android4.4编译系统介绍out/target/product/项目名/rootout/target/product/项目名/systemout/target/product/项目名/dataout/target/product/项目名/recovery这四个目录分别是bootsystemuserdata和recoveryimage中的直接内容,其中的文件和手机运行后各个对应分区中的内容是一一对应的,当我们通过mm指令来编译某个特定的And