Android编译

        刚刚大学毕业,正式开始了自己的第一份工作------Android开发工程师,也是一段新的学习之旅的开始,真心觉得有必要记录一下自己的所学。工作伊始,第一项任务就是Android系统的编译,(理科生,文学功底有限,尽量说明白^_^)。

一、Android编译系统

        Android编译系统是Android源码的一部分,用于编译Android系统、SDK以及相关Android文档,包括Make文件、shell以及Python脚本组成,其中Make文件起主要作用

1.Make文件:

          系统核心的Make文件:定义了Build系统的框架,文件全部位于路径/build/core,其他Make文件都是基于该框架编写的;

          针对产品的Make文件:定义了具体某个型号手机的Make文件,文件路径位于/device,该目录下往往又以公司名和产品名划分两个子级目录,比如/device/qcom/msm8916;

           针对模块的Make文件:整个系统分为各个独立的模块,每个模块都一个专门的Make文件,名称统一为”Android.mk”,该文件定义了当前模块的编译方式。Build系统会扫描整个源码树中名为”Android.mk”的问题,并执行相应模块的编译工作。

2.编译结果:

            Android编译完成后,所有生成的文件都被放置在/out/目录下,一般包括host文件夹与target文件夹,具体内容自行参看。

3.Android.mk文件解析

            Android源码将每个模块以单独文件夹的方式组织,在对应的模块文件夹下都包含一个Android.mk文件,那么Android.mk文件到底是什么呢?

         一般mk文件中都包含以下两行:

                  LOCAL_PATH := $(call my-dir)//设置当编译路径为当前文件夹所在路径

                  include $(CLEAR_VARS)//清空编译环境的变量(由其他模块设置过的变量)

同时,在mk文件中还设置了一系列的编译时使用的环境变量:

                LOCAL_SRC_FILES:当前模块包含的所有源码文件;

                LOCAL_MODULE:当前模块的名称(具有唯一性);

                LOCAL_PACKAGE_NAME:当前APK应用的名称(具有唯一性);

                LOCAL_C_INCLUDES:C/C++所需的头文件路径;

                LOCAL_STATIC_LIBRARIES:当前模块在静态链接时需要的库名;

                LOCAL_SHARED_LIBRARIES:当前模块在运行时依赖的动态库名;

                LOCAL_STATIC_JAVA_LIBRARIES:当前模块依赖的Java静态库;

                LOCAL_JAVA_LIBRARIES:当前模块依赖的Java共享库;

                LOCAL_CERTIFICATE:签署当前应用的证书名称,比如platform。

                LOCAL_MODULE_TAGS:当前模块所包含的标签,可以包含多标签,可能值为debgu,eng,user,development 或 optional(默认值)

4.编译步骤

1.执行source /build/envsetup.sh脚本,进行编译环境的预先设置(执行该文件后,一些build命令才可以使用)。

2.常用命令:

           make:用于完整的Android源码的编译

           m:用于从Android的根目录开始编译

           mm:用于当前路径下所有模块的编译

           mmm:用于Android单独一个模块的编译,常跟-B参数进行强制编译

           make clean :清楚上一次编译产生的文件,避免对下一次编译造成影响

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容