Android4.4编译系统介绍_v1.5_第1页
Android4.4编译系统介绍_v1.5_第2页
Android4.4编译系统介绍_v1.5_第3页
Android4.4编译系统介绍_v1.5_第4页
Android4.4编译系统介绍_v1.5_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android4.4编译系统介绍Version: 1.5Date: 2014-03-24重要声明版权声明本文档中的任何内容受中华人民共和国著作权法的保护,版权所有 2010,展讯通信有限公司,保留所有权利,但注明引用其他方的内容除外。商标声明展讯通信有限公司和展讯通信有限公司的产品是展讯通信有限公司专有。在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。不作保证声明展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。保密声明本文档(包括任何附件)包含的信息是保密信息。接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。前 言文档说明本文档简要介绍了展讯公司Android4.4平台的编译系统及其使用方法。阅读对象本文档针对于所有展讯公司Android4.4平台客户软件工程师。内容介绍本文档包括三个章节,分别为: 第一章:编译方法介绍 第二章:新建工程和配置介绍 第三章:其他相关配置文档约定本文档采用下面醒目标志来表示在操作过程中应该特别注意的地方。注意:提醒操作中应注意的事项。相关文档Android4.4编译系统介绍 目 录第1章 代码编译的方法A-21.1 代码和编译环境的准备A-21.2 完成一次全新的编译A-31.3 单项编译和其它编译命名A-51.4 编译的成果A-6第2章 新建和配置一个项目A-82.1 新建项目编译配置文件A-82.2 配置新项目的kernel 部分A-92.3 配置新项目的u-boot 部分A-102.4 添加新项目的产品信息配置A-11第3章 其它编译相关的内容A-123.1 OTA包的编译A-123.2 如何制作多国语言版本A-12附录A Revision HistoryA-13第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 -version来查看python的版本根据ubuntu版本的不同,可能还需要一些其它的编译支持工具,完整的工具包在下面的网址可以找到/source/initializing.html如果是11.04的版本,可以在用下面的命令安装支持$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g+-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc在完成的代码和编译环境的准备之后,就可以开始进行代码的编译工作了1.2 完成一次全新的编译在完成了代码环境的准备后就可以进行一个完整的编译了,当然,客户也可以选择在完成自定义项目配置之后再开始编译,但是我们还是建议不熟悉展讯环境的客户在准备好代码之后先进行一次默认项目的编译通过ubuntu终端命令行工具进入代码的根目录,默认的代码根目录是idh.code首先执行source build/envsetup.sh这一步将读取各个项目的编译配置文件,然后执行lunch此时终端会显示出所有被配置过的项目的列表,如下图所示输入对应的数字选择需要编译的项目,目前展讯Android4.4上的参考项目是sp7715ea (Dolphin emmc方案)或者sp7715ga(Dolphin nand方案),而base或plus关键字分别代表单卡或者双卡方案。这里建议客户选择最接近自己项目形态的参考项目。 在选择完编译项目后,使用make命令来进行编译,如果编译使用的机器是支持多线程编译的,则可以使用-j选项来加快编译的速度,比如make j24-j之后的数值由编译电脑的cpu数决定。一次全新的编译根据编译服务器的性能大约需要几十分钟到几个小时不等。1.3 单项编译和其它编译命名在完成一次全编之后,在不改变当前编译项目的前提下,修改代码后可以使用单项的编译来编译对应的部分,加快开发的速度。注意:如果新打开了终端窗口,则必须重新执行source和lunch的操作选择编译项目各个部分的编译命令如下单独编译u-bootmake bootloader单独编译fdl1和uboot-16kmake chipram单独编译boot imagemake bootimage单独编译system imagemake systemimage单独编译userdata imagemake userdataimage我们还可以单独编译android的每一个模块,比如单独编译一个apk,一个java或者本地库或者本地程序,这时我们需要进入到对应模块的Android.mk所在的目录,执行mm指令,比如需要重新编译”设置”这个apk,我们就需要这样做cd packages/apps/Settings/mm这样被单独编译出来的模块可以通过adb push的方式推入调试手机进行使用,使调试阶段被经常使用到的方式。注意:ramdisk(手机根目录或者/bin目录)中的文件不建议使用adb push,需要重新下载bootimage1.4 编译的成果Android的编译输出路径为out,编译成果如下图其中最重要的目录就是out/target/product/,这里存放着用于下载的所有bin和image文件,包括fdl1.bin fdl2.bin u-boot-spl-16k.bin u-boot.bin boot.img system.img usderdata.img recovery.img cache.img。注意:并非所有的下载用文件都是编译生成的,比如cp侧的bin就是在版本发布中直接提供out/target/product/root out/target/product/system out/target/product/data out/target/product/recovery这四个目录分别是boot system userdata和recovery image中的直接内容,其中的文件和手机运行后各个对应分区中的内容是一一对应的,当我们通过mm指令来编译某个特定的Android模块时,更新的也是这些目录中的文件另外编译的符号表在很多调试和bug解决中是非常重要的,所有符号表可以在out/target/product/symboles目录下找到,我们也可以在out/target/product/obj目录下找到同样的内容,不同的是obj目录更加具体,不仅仅有符号表,而且有所有c/c+ java文件的中间编译结果。同时,kernel的符号表vmlinux也可以在out/target/product/obj/KERNEL目录下找到在out/target/host/linux-x86/bin目录下有一些常用的pc侧工具,包括fastboot mkbootimage adb等第2章 新建和配置一个项目2.1 新建项目编译配置文件 项目的编译配置文件所在目录为device/sprd/,由于项目的编译配置内容较多,我们建议客户选择一个已有的项目作为参考,通过拷贝的方式新建自己的项目。如果是Dolphin emmc方案,我们建议的选择是sp7715ea,如果是Dolphine nand方案,我们建议的选择是sp7715ga。在完成了拷贝之后,常见需要修改的内容包括。1 该项目下各个产品的mk文件的文件名比如参考sp7715ea项目新建的项目,可以把scx15_sp7715eabase.mk(单卡产品)和scx15_sp7715eaplus.mk(双卡产品)这两个产品的mk文件改成客户产品的自定义名称。还可以增加新的mk文件在项目上派生出更多的产品2 各个产品的mk文件中项目名和产品名需要修改的项TARGET_BOARD /项目名,这个是与项目编译配置的文件夹名称保持一致的PRODUCT_NAME /产品名PRODUCT_MODEL /一般同项目名3 在AndroidProducts.mk中将产品mk文件添加到编译配置需要修改的是PRODUCT_MAKEFILES,将步骤1修改或增加的mk文件的文件名添加到这里4 在vendorsetup.sh将产品添加到lunch编译选项需要修改的是add_lunch_combo,如add_lunch_combo -userdebug5 在p中添加自己定义的硬件信息需要修改的是duct.hardware6 在BoardConfig.mk文件中添加kernel和u-boot的支持需要修改的项包括TARGET_BOOTLOADER_BOARD_NAME /u-boot所使用的板级配置名称UBOOT_DEFCONFIG /u-boot所使用的配置文件名KERNEL_DEFCONFIG /kernel config文件名这些项的配置是用于配置u-boot与kernel的,在u-boot配置与kernel配置的部分会具体解释它们的使用方法2.2 配置新项目的kernel 部分在完成了项目的编译配置后,我们需要配置项目的kernel部分,这是通过向kernel中添加一个新的board来实现的1 添加对应的kernel config所有项目对应的kernel config文件都位于kernel/arch/arm/configs目录下,以 _defconfig 结尾。比如sp7715ea项目的kernel config文件就是sp7715ea-native_defconfig。需要注意的是,kernel config的文件名需要与编译配置中BoardConfig.mk文件中KERNEL_DEFCONFIG项的配置一致。我们同样建议通过拷贝参考项目对应文件的方式来添加kernel config,一旦完成了这个文件的添加,客户可以修改这个文件来改变kernel的配置,但是我们建议通过menconfig来完成kernel的配置。我们提供了命令直接使用menconfig,比如7715ea项目,可以用以下的命令source build/envsetup.shlunchkdconfigkmconfig2 添加板级配置文件板级配置文件包括c文件和头文件,c文件需要添加到kernel/arch/arm/mach-sc目录,一般以board-开头,比如sp7715ea项目的板级配置使用的是board-7715ea.c,头文件需要添加到kernel/arch/arm/mach-sc/include/mach目录,一般以_board-开头,比如sp7715ea项目的板级配置使用的是_board-sp7715ea.h,这些文件同样建议通过拷贝的方式添加3 为板级配置添加kernel config支持这一步需要修改kernel/arch/arm/mach-sc/Kconfig,在其中添加kernel config项,类似下面的内容config MACH_SPX15EAbool sp7715ea Phone Boarddepends on ARCH_SCdepends on ARCH_SCX15default nhelp SPX15EA board based on SC7715 serial.并且修改kernel/arch/arm/mach-sc/Makefile将上面添加的config与板级配置关联起来,内容如下obj-$(CONFIG_MACH_SPX15EA) += board-sp7715ea.o此处的关联时依靠MACH_SPX15EA与board-sp7715ea分别与config项的名称和板级配置文件的文件名对应来实现的4 在项目的kernel config中选择刚才添加的config项与板级配置我们需要在第一步添加的defconfig文件中选择第三步添加的config项,如下CONFIG_MACH_SPX15EA=y然后在公共的板级头文件中包含第二步添加的头文件,在kernel/arch/arm/mach-sc/include/mach/ board.h中添加类似下面的内容#ifdefCONFIG_MACH_SPX15EA#include _board-sp7715ea.h#endif5 配置自己项目板子相关的硬件信息这些信息包括使用的设备信息,gpio,i2c,lcd等等,具体请参考Android4.4客户化配置2.3 配置新项目的u-boot 部分1 添加配置头文件在u-boot/include/configs添加.h文件,文件名必须与编译配置中BoardConfig.mk文件中UBOOT_DEFCONFIG的值一致,同样建议拷贝添加2 添加u-boot的板级配置在u-boot/board/spreadtrum添加文件夹,文件夹的名称与编译配置中BoardConfig.mk文件中TARGET_BOOTLOADER_BOARD_NAME一致,内容从参考项目拷贝即可3 添加Makefile支持在u-boot/Makefile中添加如下内容sp7715ea_config : unconfigmkdir -p $(obj)includeecho CONFIG_NAND_U_BOOT = y $(obj)include/config.mk$(MKCONFIG) $ arm armv7 sp7715ea spreadtrum sc88302.4 添加新项目的产品信息配置在vendor/sprd/open-source/res/productinfo目录下添加ini文件,如Scx15_sp7715eabase_connectivity_configure.iniscx15_sp7715eaplus_connectivity_configure.ini在完成了上面所有的操作后重新执行source build/envsetup.shlunch就可以选择新添加项目的产品进行编译了第3章 其它编译相关的内容3.1 OTA包的编译1 版本的ota包生成方式首先,我们需要完整的编译对应的版本代码,然后需要确认cp相关的bin文件已经拷贝到device/sprd/spXXXX/modem_bins/目录下,根据不同的芯片,是不一样的。 在Dolphin平台上,包括dsp.bin,modem.bin,nvitem.bin,cpfdl.bin。如果采用BT/WIFI/FM三合一芯片的,还会有wcnmodem.bin和wcnnvitem.bin,然后 使用命令make otapackage来生成ota包,ota包会在out目录下以 -ota-.zip 的命名以压缩文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论