19.Android framework层源码(笔记)

1、提示:在Android的SDK环境中开发Java应用,一般只能调用框架层API。而在源代码环境中开发Java应用,可以调用框架层非API部分的其他接口。

2、框架层API的主要来源:
Java核心库core.jar中对外的部分(主要为java.*,javax.*和org.*的各个包);
Java框架库framework.jar中对外的部分(主要为android.*的各个包);
资源包framework-res.apk中对外的部分(android.R包),是根据资源文件自动生成的,并没有Java源代码与之对应;
core-unit.jar;

3、在Android全系统编译的时候,如果源代码和current.xml(framework/base/api/下)描述的API不一致,编译过程将报错,可以使用如下的命令更新current.xml:

$ make update-api

4、在开发Androi的系统的时候,如果需要更改框架层内容增加接口,只要不需要对第三方公开,就可以使用@hide描述将其隐藏,这样就不需要改动current.xml,但是依然卡伊被自己的源代码环境中的应用程序调用。

5、过时的API

@Deprecated

6、Java框架库主要分布在framework/base/:

  • core:Android核心报;
  • graphics:图形处理包;
  • opengl:Android OpenGL 3D实现;
  • location:定位相关的内容;
  • telephony:电话部分相关内容;
  • media:多媒体和音频相关内容;
  • wifi:无限局域网相关内容;
    在以上的目录中都包含了一个Java子目录,也就是Java框架层的代码。
    core是主要的目录,实现了Android系统多定义的大部分Java类,其它的部分通常是和硬件有些关系的,每个部分单独使用一个目录。

7、框架中的类分为对外的API和内部的类

  • <path>/java/android/:Android.*包中的内容,其中包括API;
  • <path>/java/com/:com.*包中的内容,其中都是内部类。
<pah>表示框架库的一个模块,例如core、graphics、media等。也就是说,在每模块的java路径中,只有android目录才有可能提供对外的API,
com目录当中都是内部使用的包。当然,android目录中的内容不都是API,在代码中使用@hide可以隐藏内容。除此之外,还可以隐藏各个目录中
的package.html。各个目录中的package.html文件为对这个部分的描述;在这个文件中可以使用标记将整个目录的内容“隐藏”。

8、框架库的编译结构
frameworks/base/目录中的Android.mk文件负责framework.jar包的编译。里面使用宏FRAMEWORKS_BASE_SUBDIRS所指定的各个Java源代码的路径,这个宏有build/core/目录的pathmap.mk文件定义,如下所示:

FRAMEWORKS_BASE_SUBDIRS := \
                $(addsuffix /java, \
                              core \ 
graphics location media opengl sax \
  telephony wifi vpn keystore voip \
)

定义的宏根据framework/base中的core、graphics、location等子目录,找到其中的Java目录中的内容。这里的引用方式有些特殊,编译framework/base目录中的内容的时候却使用了一个build目录中的文件指定编译内容。
随Android版本发展,如需增加新的目录,同样需要修改pathmap.mk文件,同时目录的结构要和原有的目录相同。

在编译过程中,所有的挨打了文件也需要进行处理;并且关联生成out/target/common/obj目录中的framework.aidl文件。如果需要在框架中增加aidl文件,则需要把aidl文件的路径增加到编译宏LOCAL_SRC_FILES当中。
** 提示 **
在Android的开发过程中,如果框架库的内容发生了更改,全系统编译时将把所有应用程序包全部重新生成,好是非常长。为了加快调试速度,如果的确没有更改API,可以使用mmm的方式编译framewo/base目录,至声称framewor.jar包。

9、核心部分(frameworks/base/core)
core部分包含了Android中大部分重要的Java类;位于core/java目录中。

  • core/java/android:很多类是作为Android框架层标准的API;Android核心包及其子包;
  • core/java/com:则是核心内部的内部包,com/android/下主要是一个internal子包,com/google/目录为com.google.*包及其子包;

graphics(2D图形)、OpenGL、Media(多媒体)、Location(定位)、Telephony(电话)、wifi(无线)等

10、Java服务库 services.jar

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,932评论 25 707
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,417评论 2 45
  • 读《精进》 【设计挑战自己】 遇强则强,遇弱则弱。不能满足于那些约定俗成的“规定”动作,而要主动突破。迎接挑战,也...
    jiang丫丫丫头阅读 483评论 0 0
  • 来自美国弗罗里达州的橙县动物服务(OCA)最近开始了一个项目,他们相信一张照片可以改变一个在收容所里的动物的命运,...
    神秘的大熊阅读 285评论 0 0
  • 读《唐浩明点评曾国藩日记》 道光二十三年三月十一日 作为京官,平时干的实事比较少,全靠三年一次的大考表现来决定是否...
    读行人声阅读 665评论 0 0