返回首页
当前位置: 主页 > 讲师博文 >

Android系统移植及编译(二)

时间:2014-08-04 14:32来源:华嵌长沙分中心 作者:周龙 点击:
Android 编译系统 作者:华嵌长沙中心讲师 周龙 本章节主要针对android系统移植及编译,对android编译系统进行简要的概述,至于具体一个android项目makefile怎么编写及编译,可以参考我的其
  

                                                 Android 编译系统

 

      作者:华嵌长沙中心讲师     周龙

 

     本章节主要针对android系统移植及编译,对android编译系统进行简要的概述,至于具体一个android项目makefile怎么编写及编译,可以参考我的其他文章。

Android编译系统核心基于GNU make,makefile的语法也和GNU makefile 语法一致。为了编译android整个目录源码,android 编译系统定义了很多模板、预设置变量及框架(在build目录下可以找到),对于我们需要大概了解如下:

预设置的变量

TARGET_PRODUCT:

    目标产品名

TARGET_BUILD_VARIANT:

    编译类别,有三个具体的值:

eng(默认值); user(最终发布一般用这个); userdebug。

不同的值,编译行为及结果(主要影响哪些模块将被安装,以及系统属性值)会有一定的不同:

 

 

eng

安装标记为:eng, debug,user,development的模块;

ro.secure=0

ro.debuggable=1

ro.kernel.android.checkjni=1

adb功能被使能

user

安装标记为user的模块;

ro.secure=1

ro.debuggable=0

adb功能被禁掉

userdebug

和user标记一样,除了以下:

也安装标记为debug的模块;

ro.debuggable=1

adb功能使能

 

TARGET_BUILD_TYPE:

    release/debug

TARGET_ARCH:

arm, mips, x86

TARGET_ARCH_VARIANT:

    体系结构具体版本;

    这个变量的具体取值为下面的variant_name:

    build/core/combo/arch/[arm|mips|x86]/<variant_name>.mk

TARGET_CPU_VARIANT:

    CPU型号,像cortex-a7, cortex-a8, cortex-a9,cortex-a15,krait …

    这个变量的具体取值可以以下面这个目录模块查到:

    bionic/libc/arch-arm/$(TARGET_CPU_VARIANT)/$(TARGET_CPU_VARIANT).mk

envsetup.sh

  android的编译都是以source build/envsetup.sh 命令开始的;

  上面那条命令其实就是增加一些shell函数和变量(定义在build/envsetup.sh)到你的bash环境(如你当前的终端环境),如(我们经常会用到的):

    hmm()  – 打印简要的帮助菜单

   lunch() – 列出编译目标菜单(可用的编译目标)

   add_lunch_combo– 增加一个新的编译目标到目标菜单

    mm– 编译当前目录下面的所有模块

 这条命令同时会source device/*/*/vendorsetup.sh

⑶Android.mk

  每个具体的源码目录有一个主makefile: Android.mk。编译不同的目标,有不同的模板,可以参考android源代码目录中,相关的例子。

⑷编译输出结果(包括中间文件)放在out目录下

    out/host, out/target

   out/target/product/<platform-name>/

       obj/ 放中间文件

       root/  根文件系统

       system/  android文件系统:虚拟机,服务,运行库,apk等等

       data/  用户数据

       其中root和kernel一起生成boot.img,  system用于生成system.img, data用于生成userdata.img。

     未完,待续........

 

相关课程链接Android软件开发就业班

------分隔线----------------------------

  • 胡老师
  • 李老师
  • 周老师
  • 李老师
合作伙伴
  • 武汉工程大学合作培训机构

  • 国家信息技术紧缺人才培养工程(NITE)

  • ARM公司全球授权培训中心

  • 国内首家Symbian授权培训

  • 微软全球嵌入式合作伙伴

  • Altera全球合作培训机构