Android源码分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
Android 2.1 源码结构分析
lee
Android 2.1
|-- Makefile
|-- bionic               (bionic C库)
|-- bootable            (启动引导相关代码)
|-- build                 (存放系统编译规则及generic等基础开发包配置)
|-- cts                    (Android兼容性测试套件标准)
|-- dalvik                (dalvik JAVA虚拟机)
|-- development      (应用程序开发相关)
|-- external             (android使用的一些开源的模组)
|-- frameworks       (核心框架——java及C++语言)
|-- hardware           (主要保护硬解适配层HAL代码)
|-- out                    (编译完成后的代码输出与此目录)
|-- packages           (应用程序包)
|-- prebuilt             (x86和arm架构下预编译的一些资源)
|-- sdk                   (sdk及模拟器)
|-- system              (文件系统库、应用及组件——C语言)
`-- vendor              (厂商定制代码)
 
bionic 目录
|-- libc                   (C库)
|   |-- arch-arm     (ARM架构,包含系统调用汇编实现)
|   |-- arch-x86     (x86架构,包含系统调用汇编实现)
|   |-- bionic         (由C实现的功能,架构无关)
|   |-- docs           (文档)
|   |-- include        (头文件)
|   |-- inet             (?inet相关,具体作用不明)
|   |-- kernel         (Linux内核中的一些头文件)
|   |-- netbsd         (?nesbsd系统相关,具体作用不明)
|   |-- private         (?一些私有的头文件)
|   |-- stdio           (stdio实现)
|   |-- stdlib          (stdlib实现)
|   |-- string           string 函数实现)
|   |-- tools           (几个工具)
|   |-- tzcode         (时区相关代码)
|   |-- unistd         (unistd实现)
|   `-- zoneinfo      (时区信息)
|-- libdl                  (libdl实现,dl是动态链接,提供访问动态链接库的功能)
|-- libm                  (libm数学库的实现,)
|   |-- alpha           (apaha架构)
|   |-- amd64        (amd64架构)
|   |-- arm            (arm架构)
|   |-- bsdsrc        (?bsd的源码)
|   |-- i386            (i386架构)
|   |-- i387            (i387架构?)
|   |-- ia64            (ia64架构)
|   |-- include        (头文件)
|   |-- man            (数学函数,后缀名为.3,一些为freeBSD的库文件)
|   |-- powerpc     (powerpc架构)
|   |-- sparc64       (sparc64架构)
|   `-- src             (源代码)
|-- libstdc++           (libstdc++ C++实现库)
|   |-- include        (头文件)
|   `-- src             (源码)
|-- libthread_db       (多线程程序的调试器库)
|   `-- include        (头文件)
`-- linker                (动态链接器)
     `-- arch          (支持arm和x86两种架构)
bootable 目录
.
|-- bootloader                       (适合各种bootloader的通用代码)
|   `-- legacy                       (估计不能直接使用,可以参考)
|       |-- arch_armv6        (V6架构,几个简单的汇编文件)
|       |-- arch_msm7k             (高通7k处理器架构的几个基本驱动)
|       |-- include               (通用头文件和高通7k架构头文件)
|       |-- libboot               (启动库,都写得很简单)
|       |-- libc                    (一些常用的c函数)
|       |-- nandwrite           (nandwirte函数实现)
|       `-- usbloader           (usbloader实现)
|-- diskinstaller                     (android镜像打包器,x86可生产iso)
`-- recovery                         (系统恢复相关)
     |-- edify                        (升级脚本使用的edify脚本语言)
     |-- etc                           (init.rc恢复脚本)
     |-- minui                       (一个简单的UI)
     |-- minzip                      (一个简单的压缩工具)
     |-- mtdutils                    (mtd工具)
     |-- res                           (资源)
     |   `-- images               (一些图片)
     |-- tools                        (工具)
     |   `-- ota                    (OTA Over The Air Updates升级工具)
     `-- updater                    (升级器)
build目录
.
|-- core                         (核心编译规则)
|-- history                            (历史记录)
|-- libs                        
|   `-- host                   (主机端库,有android “cp”功能替换)
|-- target                       (目标机编译对象)
|   |-- board                 (开发平台)
|   |   |-- emulator       (模拟器)
|   |   |-- generic         (通用)
|   |   |-- idea6410      (自己添加的)
|   |   `-- sim              (最简单)
|   `-- product              (开发平台对应的编译规则)
|       `-- security      (密钥相关)
`-- tools                        (编译中主机使用的工具及脚本)
     |-- acp                   (Android "acp"  Command)
     |-- apicheck           (api检查工具)
     |-- applypatch         (补丁工具)
     |-- apriori               (预链接工具)
     |-- atree                 (tree工具)
     |-- bin2asm            (bin转换为asm工具)
     |-- check_prereq     (检查编译时间戳工具)
     |-- dexpreopt          (模拟器相关工具,具体功能不明)
     |-- droiddoc           (?作用不明,java语言,网上有人说和JDK5有关)
     |-- fs_config          (This program takes a list of files and directories)
     |-- fs_get_stats              (获取文件系统状态)
     |-- iself                  (判断是否ELF格式)
     |-- isprelinked         (判断是否prelinked)
     |-- kcm                  (按键相关)
     |-- lsd                    (List symbol dependencies)
     |-- releasetools        (生成镜像的工具及脚本)
     |-- rgb2565            (rgb转换为565)
    |-- signapk             (apk签名工具)
     |-- soslim               (strip工具)
`-- zipalign             (zip archive alignment tool)
 
dalvik目录 dalvik虚拟机
.
|-- dalvikvm                  (main.c的目录)
|-- dexdump                  (dex反汇编)
|-- dexlist                      (List all methods in  all concrete classes in  a DEX file.)
|-- dexopt                            (预验证与优化)
|-- docs                        (文档)
|-- dvz                          (和zygote相关的一个命令)
|-- dx                           (dx工具,将多个java转换为dex)
|-- hit                           (?java语言写成)
|-- libcore                            (核心库)
|-- libcore-disabled         (?禁用的库)
|-- libdex                       (dex的库)
|-- libnativehelper           (Support functions for  Android's class  libraries)
|-- tests                        (测试代码)
|-- tools                        (工具)
`-- vm                          (虚拟机实现)
 
development 目录         (开发者需要的一些例程及工具)
|-- apps                        (一些核心应用程序)
|   |-- BluetoothDebug (蓝牙调试程序)
|   |-- CustomLocale     (自定义区域设置)
|   |-- Development      (开发)
|   |-- Fallback             (和语言相关的一个程序)
|   |-- FontLab             (字库)
|   |-- GestureBuilder    (手势动作)
|   |-- NinePatchLab     (?)
|   |-- OBJViewer         (OBJ查看器)
|   |-- SdkSetup           (SDK安装器)
|   |-- SpareParts          (高级设置)
|   |-- Term                 (远程登录)
|   `-- launchperf          (?)
|-- build                        (编译脚本模板)
|-- cmds                       (有个monkey工具)
|-- data                         (配置数据)
|-- docs                        (文档)
|-- host                         (主机端USB驱动等)
|-- ide                           (集成开发环境)
|-- ndk                          (本地开发套件——c语言开发套件)
|-- pdk                          (Plug Development Kit)
|-- samples                    (例程)
|   |-- AliasActivity       (?)
|   |-- ApiDemos          (API演示程序)
|   |-- BluetoothChat     (蓝牙聊天)
|   |-- BrowserPlugin    (浏览器插件)
|   |-- BusinessCard      (商业卡)
|   |-- Compass            (指南针)
|   |-- ContactManager (联系人管理器)
|   |-- CubeLiveWallpaper     (动态壁纸的一个简单例程)
|   |-- FixedGridLayout (像是布局)
|   |-- GlobalTime         (全球时间)
|   |-- HelloActivity       (Hello)
|   |-- Home                 (Home)
|   |-- JetBoy               (jetBoy游戏)
|   |-- LunarLander       (貌似又是一个游戏)
|   |-- MailSync            (邮件同步)
|   |-- MultiResolution   (多分辨率)
|   |-- MySampleRss     (RSS)
|   |-- NotePad             (记事本)
|   |-- RSSReader         (RSS阅读器)
|   |-- SearchableDictionary (目录搜索)
|   |-- SimpleJNI          (JNI例程)
|   |-- SkeletonApp       (空壳APP)
|   |-- Snake                (snake程序)
|   |-- SoftKeyboard     (软键盘)
|   |-- Wiktionary          (?维基)
|   `-- WiktionarySimple(?维基例程)
|-- scripts                            (脚本)
|-- sdk                          (sdk配置)
|-- simulator                  (?模拟器)
|-- testrunner                 (?测试用)
`-- tools                        (一些工具)
 
external 目录
.
|-- aes    (AES加密)

你可能感兴趣的:(java,android,工具,include,frameworks,linux内核)