




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译环境:ubuntu 10.04(或者更高)(windows平台目前不被支持)本文以编译android2.3为例,64位操作系统1、编译环境的准备( 1)确保安装有ubuntu系统或者虚拟机(2)安装JDK1.6(对于Android2.3以上代码)$ sudo add-apt-repository deb / lucid partner$ sudo add-apt-repository deb-src /ubuntu lucid partner$ sudo apt-get update$ sudo apt-get install sun-java6-jdk(3)安装一些需要软件包$ 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(4)安装repo$ git clone git://tools/repo.git$ mkdir /bin$ cp repo-script/repo /bin$ vim /.bashrc ,将/bin加入PARH环境变量,如:$ export PATH=/bin:$PATH保存后,同步更新:source /.bashrc(5)设置git执行以下语句$git config -global 你的名字$git config -global user.email 你的email地址(6)同步源代码1)创建工程目录:$ mkdir myandroid$ cd myandroid2)repo初始化以及同步代码$repo init -u server192.168.x.xx:git库名/manifest.git -b 主分支名在此过程中需要输入名字和email地址。初始化成功后,会显示:repo initialized in /android在/android下会有一个.repo的隐藏目录$repo sync(这一步会花费很长时间)2、编译(1)注意事项执行ls -la /bin/sh命令,如果输出/bin/sh - dash,请执行$ sudo dpkg-reconfigure dash命令修改sh版本,并选择“否”;此处如果不改好的话,编译时会出现错误。(2)代码下载完成后就可以进行编译了$ cd myandroid$ make(此过程需要很长时间)(3)编译完成后的代码结构Android编译完成之后,将会在根目录下生成一个out文件夹,所有生成的内容均放在这个文件夹中。Out文件夹的内容以及结构如下:out/|- CaseCheck.txt|- casecheck.txt|- host| |- common| - linux-x86- target|- common- product两个主要的目录为host和target,host表示主机(x86)生成的工具,target表示目标机运行的内容。Host目录的结构如下所示:out/host/|- common| - obj(JAVA库)- linux-x86|- bin(二进制程序)|- framework(JAVA库,.jar文件)|- lib(共享库*.so)- obj(中间生成的目标文件)host目录是一些在主机上用的工具,有一些是JAVA的程序。Target目录的结构如下:out/target/|- common| |- R(资源文件)| |- docs| - obj(目标文件)- product- generic其中common目录表示通用的内容,product表示的产品的内容。在common目录的obj中,包含两个重要的目录:APPS:包含了JAVA应用程序生成的目标,每个应用程序对应其中的一个子目录,将结合每个应用程序的原始文件生成Android应用程序的APK包。JAVA_LIBRARIES中包含了JAVA的库,每个库对应其中的一个子目录。在默认情况下,Android编译将生成generic目录,如果选定产品还可以生成其他的目录(如ventana)。generic一般包含以下内容:out/target/product/generic/|- android-info.txt|- clean_steps.mk|- data|- obj|-ramdisk.img|- root|- symbols|- system|-system.img|-userdata.img在generic/obj/APPS目录中包含可各种JAVA应用,这与common/APPS想对应,但是已经打成了APK包。system目录是主要的文件系统;data目录是存放数据的文件系统。obj/SHARED_LIBRARIES中存放所有的动态库;STATIC_LIBRARIES中存放所有的静态库。以img结尾的文件是目标映像文件,其中ramdisk.img是作为内存盘的根文件系统映像,system.img是主要文件系统的映像,userdata.img是数据内容映像。这几个Image文件是运行时真正需要的文件。(4)编译单个模块android中的一个应用程序可以单独编译,生成想对应的APK包,以Email为例。$ source build/envsetup.sh就多出一些命令:- croot: Changes directory to the top of the tree.- m: Makes from the top of the tree.- mm: Builds all of the modules in the current directory.- mmm: Builds all of the modules in the supplied directories.- cgrep: Greps on all local C/C+ files.- jgrep: Greps on all local Java files.- resgrep: Greps on all local res/*.xml files.- godir: Go to the directory containing a file.$ mm Email编译之后生成out/target/product/generic/system/app/Email.apk3、编译文件分类(1)配置类主要用来配置product、board,以及根据你的Host和Target选择相应的工具以及设定相应的通用编译选项:config文件说明build/core/config.mkConfig文件的概括性说明build/core/envsetup.mkgenerate目录构成等配置build/target/product产品相关配置build/target/board硬件相关的配置build/core/combo编译选项配置Config.mk是一个总括性的东西,它里面定义了各种midule编译所需要使用的HOST工具以及如何来编译各种模块。envsetup.mk主要会读取由envsetup.sh写入环境变量中的一些变量来配置编译过程中的输出目录,combo里面主要定义了各种Host和Target结合的编译器和编译选项。board主要是涉及到硬件芯片的配置,比如是否提供硬件的某些功能,或者芯片支持浮点运算等等。product针对当前的芯片配置来定义你将要生产产品的个性配置,只要指APK方面的配置,如哪些APK会包含在哪个product中,哪些APK在当前product中是不提供的。这类文件主要定义了如何来处理Module和Android.mk,以及采用何种方式来生成目标模块,这些模块的规则都定义在config.mk里面,如下:CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mkBUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mkBUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mkBUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mkBUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mkBUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mkBUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mkBUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mkBUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mkBUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mkBUILD_PHONY_PACKAGE:= $(BUILD_SYSTEM)/phony_package.mkBUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mkBUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mkBUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mkBUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mkBUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mkBUILD_HOST_JAVA_LIBRARY:= $(BUILD_SYSTEM)/host_java_library.mkBUILD_DROIDDOC:= $(BUILD_SYSTEM)/droiddoc.mkBUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mkBUILD_KEY_CHAR_MAP := $(BUILD_SYSTEM)/key_char_map.mk除了CLEAR_VARS是清除本地变量之外,其他所有的都对应了一种模块的生成规则,每一个本地模块最后都会include其中的一种来生成目标模块。大部分上面的.mk都会包含base_rules.mk,这是对模块进行处理的基础文件。(3)单个模块的编译本地模块的Makefile文件就是Android.mk文件。Android进行编译的时候会通过下面的函数来遍历所有子目录中的Android.mk,一旦找到就不会再往层子目录继续寻找(所有你的模块定义的顶层Android.mk必须包含自己定义的子目录中的Android.mk)。subdir_makefiles += $(shellbuild/tools/findleaves.sh -prune=./out $(subdirs) Android.mk)不同类型的本地模块具有不同的语法,但基本上是相通的,只有个别变量的不同。Android通过LOCAL_MODULE_TAGS来决定哪些本地模块会不会编译进系统,通过PRODUCT和LOCAL_MODULE_TAGS来决定哪些应用包会编译进系统,如果用户不指定LOCAL_MODULE_TAGS,默认它的值是user。此外用户可以通过buildspec.mk来指定你需要编译进系统的模块。用户也可以通过mm来编译指定模块,或者通过make clean-module_name来删除指定模块。(4)系统生成类主要指build/core/Makefile文件,这个文件定义了生成各种img的方式,包括ramdisk.img, urerdata.img, system.img, recovery.img等。所有的Makefile都通过build/core/main.mk这个文件组织在一起,它定义了一个默认goals:droid,当我们在TOP目录下敲Make实际上就等同于我们执行make droid。当Make include
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025山东芳蕾田园综合体有限公司招聘17人笔试参考题库附带答案详解
- 2025国家广播电视总局郑州招聘310人(河南)笔试参考题库附带答案详解
- 2025四川安洪圣人力资源管理有限公司招聘17人笔试参考题库附带答案详解
- 小升初-01 表达方式
- 2025东蒙服装科技有限公司服招工532人(河北)笔试参考题库附带答案详解
- 设备出借合同协议
- 2025商场地下停车场租赁合同范本
- 鱼池买卖合同协议
- 设计服装合同协议
- 2025中检浙北检验认证(浙江)有限公司招聘6人笔试参考题库附带答案详解
- 2024年广东省深圳市光明区建筑工务署第二批选聘特聘专干8人历年高频500题难、易错点模拟试题附带答案详解
- 成人中心静脉导管(CVC)堵塞风险评估及预防-2024团体标准
- 人教版四年级语文下册期中考试及答案
- 2024至2030年中国快速成型医疗器械市场现状研究分析与发展前景预测报告
- 肿瘤专科护士考试题 附有答案
- 安全风险分级管控与隐患排查治理双重预防体系-污水处理厂模板
- JJG 705-2014液相色谱仪行业标准
- YY/T 0331-2024脱脂棉纱布、脱脂棉粘胶混纺纱布的性能要求和试验方法
- 计划书绿色背景
- 北师大版数学三年级下册-第3单元《找规律》教案
- 西安市西绕城高速路上桥群机械拆除工程施工方案样本
评论
0/150
提交评论