免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1970 | 回复: 0
打印 上一主题 下一主题

[Android] Android系统移植及编译(二) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-23 15:49 |只看该作者 |倒序浏览
    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。

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

更多详情 敬请关注华嵌
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP