�gӭ���R�ЈD�W(w��ng) Ո(q��ng) | ע��(c��)
> >>
��������Android��(n��i)���O(sh��)Ӌ(j��)˼�� ��2��(�����ƒ�(c��))

���] ��������Android��(n��i)���O(sh��)Ӌ(j��)˼�� ��2��(�ϡ��ƒ�(c��))

���ߣ��֌W(xu��)ɭ
�����磺�����]늳���������r(sh��)�g��2017-02-01
�_���� 16�_ 퓔�(sh��)�� 996
�� �D �r(ji��):¥94.8(6.0��) ���r(ji��)  ¥158.0 ��䛺�ɿ�����(hu��)�T�r(ji��)
����ُ��܇ �ղ�
�_������ ȫ��(ch��ng)���]
?�½������س���
������Ǖ�����>
�I�^����Ʒ����߀�I��

��������Android��(n��i)���O(sh��)Ӌ(j��)˼�� ��2��(�����ƒ�(c��)) ���(qu��n)��Ϣ

��������Android��(n��i)���O(sh��)Ӌ(j��)˼�� ��2��(�����ƒ�(c��)) ������ɫ

ȫ���IJ���ϵ�y(t��ng)�Ļ��A(ch��)֪�R(sh��)������ȫ�������M(j��n)��/��������(n��i)�������Binder�C(j��)�ơ�GUI�@ʾϵ�y(t��ng)����ý�w������ݔ��ϵ�y(t��ng)��̓�M�C(j��)�Ⱥ��ļ��g(sh��)��Android�еČ�(sh��)�F(xi��n)ԭ���������v����֪�R(sh��)�c(di��n)�󲿷ց�Դ�ڹ����(xi��ng)Ŀ�аl(f��)����������^��(qi��ng)�Č�(sh��)���ԣ�ϣ������׌�x��“֪��Ȼ����֪������Ȼ”�������֞龎�gƪ��ϵ�y(t��ng)ԭ��ƪ����(y��ng)��ԭ��ƪ��ϵ�y(t��ng)����ƪ����4ƪ25�����������w�˅��cAndroid�_�l(f��)����߂��֪�R(sh��)����ͨ�^�����DƬ�c��(sh��)��������(d��o)�x�ߌW(xu��)��(x��)������M����Դ�a��������x���ṩ�����������˼�S��ʽ�� �������m��Androidϵ�y(t��ng)���̎���Ҳ�m���ڑ�(y��ng)���_�l(f��)���̎�����x���Ķ�����Android�_�l(f��)�������x�߿����ڱ�������Ĭ���ČW(xu��)��(x��)�^���и���̵�����Androidϵ�y(t��ng)���������W(xu��)֪�R(sh��)��Ȼ�ؑ�(y��ng)�õ���(sh��)�H�_�l(f��)�y�}�Ľ�Q����

��������Android��(n��i)���O(sh��)Ӌ(j��)˼�� ��2��(�����ƒ�(c��)) ��(n��i)�ݺ�(ji��n)��

����Android SDK zui�°汾 ȫ���������M(j��n)��/��������(n��i)�������Binder�C(j��)����GUI�@ʾϵ�y(t��ng)����ý�w������ݔ��ϵ�y(t��ng)�Ⱥ���֪�R(sh��)��Android�еČ�(sh��)�F(xi��n)ԭ�� Android��ȫ�C(j��)�� ̓�M ��(n��i)�惞(y��u)�� ���܃�(y��u)�� ͨ�^�����DƬ�c��(sh��)��������(d��o)�x�ߌW(xu��)��(x��)������M����Դ�a�����������x���ṩ�����������˼�S·�� �ɜ\�������ɿ��w����ٵ���(x��)��(ji��)��(sh��)�F(xi��n)��׌�x�߱M���˽�Android��(n��i)�˵��O(sh��)Ӌ(j��)˼��

��������Android��(n��i)���O(sh��)Ӌ(j��)˼�� ��2��(�����ƒ�(c��)) Ŀ�



Ŀ���









��1ƪ��Android���gƪ

��1�¡�Androidϵ�y(t��ng)��(ji��n)�顡2

1.1��Androidϵ�y(t��ng)�l(f��)չ�v�̡�2

1.2��Androidϵ�y(t��ng)���c(di��n)��4

1.3��Androidϵ�y(t��ng)��ܡ�8

��2�¡�AndroidԴ�a���d�����g��11

2.1��AndroidԴ�a���dָ�ϡ�11

2.1.1������Repo��Git��

�汾������11

2.1.2��AndroidԴ�a���d���̡�12

2.2��ԭ��Androidϵ�y(t��ng)���gָ�ϡ�16

2.2.1���������g�h(hu��n)����16

2.2.2�����g���̡�19

2.3�����Ʈa(ch��n)Ʒ�ľ��g�c��䛡�22

2.3.1�������®a(ch��n)Ʒ��22

2.3.2��Linux��(n��i)�˾��g��26

2.3.3�����/����(j��)ϵ�y(t��ng)��27

2.4��Android Multilib Build��28

2.5��Androidϵ�y(t��ng)ӳ���ļ���31

2.5.1��boot.img��32

2.5.2��ramdisk.img��34

2.5.3��system.img��35

2.5.4��Verified Boot��35

2.6��ODEX���̡�37

2.7��OTAϵ�y(t��ng)����(j��)��39

2.7.1����������(j��)����39

2.7.2���@ȡ����(j��)����40

2.7.3��OTA����(j��)—Recovery

ģʽ��41

2.8��Android�����g��44

2.9��NDK Build��46

2.10��������ROM����ֲ��48

��3�¡�Android���gϵ�y(t��ng)��50

3.1��Makefile���T��50

3.2��Android���gϵ�y(t��ng)��52

3.2.1��Makefile��ه��ĸ��53

3.2.2��Android���gϵ�y(t��ng)����

ģ�͡�53

3.2.3�������(ji��)�c(di��n)droid��54

3.2.4��main.mk������55

3.2.5��droidcore��(ji��)�c(di��n)��59

3.2.6��dist_files��61

3.2.7��Android.mk�ľ���Ҏ(gu��)�t��61

3.3��Jack Toolchain��64

3.4��SDK�ľ��g�^�̡�68

3.4.1��envsetup.sh��68

3.4.2��lunch sdk-eng��70

3.4.3��make sdk��75

3.5��Androidϵ�y(t��ng)GDB�{(di��o)ԇ��85

��2ƪ��Androidԭ��ƪ

��4�¡�����ϵ�y(t��ng)���A(ch��)��90

4.1��Ӌ(j��)��C(j��)�wϵ�Y(ji��)��(g��u)

��Computer��Architecture����90

4.1.1���T �Z�����Y(ji��)��(g��u)��90

4.1.2������Y(ji��)��(g��u)��90

4.2��ʲô�Dz���ϵ�y(t��ng)��91

4.3���M(j��n)���gͨ�ŵĽ�(j��ng)�䌍(sh��)�F(xi��n)��93

4.3.1�������(n��i)��

��Shared��Memory����94

4.3.2���ܵ���Pipe����95

4.3.3��UNIX Domain Socket��97

4.3.4��RPC��Remote Procedure Calls����99

4.4��ͬ���C(j��)�ƵĽ�(j��ng)�䌍(sh��)�F(xi��n)��100

4.4.1����̖(h��o)����Semaphore����100

4.4.2��Mutex��101

4.4.3���̣ܳ�Monitor����101

4.4.4��Linux Futex��102

4.4.5��ͬ��������103

4.5��Android�е�ͬ���C(j��)�ơ�104

4.5.1���M(j��n)���gͬ��——Mutex��104

4.5.2���l���Д�——Condition��105

4.5.3��“�řڡ��ϵK”

——Barrier��107

4.5.4���ӽ��i���Ԅ�(d��ng)������

——Autolock��108

4.5.5���x���i——Reader

WriterMutex��109

4.6������ϵ�y(t��ng)��(n��i)��������A(ch��)��110

4.6.1��̓�M��(n��i)��

��Virtual��Memory����110

4.6.2����(n��i)�汣�o(h��)

��Memory��Protection����113

4.6.3����(n��i)������c���ա�113

4.6.4���M(j��n)���gͨ��——mmap��114

4.6.5�����r(sh��)��ؐ���g(sh��)

��Copy��on Write����115

4.7��Android�е�Low

Memory��Killer��115

4.8��Android���������(n��i)��

��Anonymous��Shared Memory����118

4.8.1��Ashmem�O(sh��)�䡡118

4.8.2��Ashmem��(y��ng)��(sh��)����122

4.9��JNI��127

4.9.1��Java����(sh��)�ı��،�(sh��)�F(xi��n)��127

4.9.2�����ش��a�L��JVM��130

4.10��Java�еķ���C(j��)�ơ�132

4.11���W(xu��)��(x��)Androidϵ�y(t��ng)�ăɗl������133

��5�¡�Android�M(j��n)��/���̺�

�����(n��i)�惞(y��u)����134

5.1��Android�M(j��n)�̺;��̡�134

5.2��Handler, MessageQueue,

Runnable�cLooper��140

5.3��UI������——ActivityThread��147

5.4��Thread�150

5.4.1��Threadă�(n��i)��ԭ����150

5.4.2��Thread���ߺ͆��ѡ�151

5.4.3��Thread��(sh��)����155

5.5��Android��(y��ng)���������

CPU�Ķ��̎��������157

5.6��Android��(y��ng)�ó���ĵ��͆�

��(d��ng)���̡�157

5.7��Android����ă�(n��i)������c��(y��u)����159

5.7.1��Androidϵ�y(t��ng)��(du��)��(n��i)��ʹ��

�����ơ�159

5.7.2��Android�еă�(n��i)��й¶�c

��(n��i)��O(ji��n)�y(c��)��160

��6�¡��M(j��n)���gͨ�� — Binder��166

6.1������ָᘡ�169

6.1.1������ָᘵ��O(sh��)Ӌ(j��)���169

6.1.2����(qi��ng)ָ�sp��172

6.1.3����ָ�wp��173

6.2���M(j��n)���g�Ĕ�(sh��)��(j��)���f�d�w

——Parcel��179

6.3��Binder�(q��)��(d��ng)�c�f(xi��)�h��187

6.3.1�����_Binder�(q��)��(d��ng)

——binder_open��188

6.3.2��binder_mmap��189

6.3.3��binder_ioctl��192

6.4��“DNS”����(w��)��——Service

Manager(Binder Server)��193

6.4.1��ServiceManager����(d��ng)��193

6.4.2��ServiceManager��(g��u)����194

6.4.3���@ȡServiceManager��

��(w��)—�O(sh��)Ӌ(j��)˼����199

6.4.4��ServiceManagerProxy��203

6.4.5��IBinder��BpBinder��205

6.4.6��ProcessState��IPCThreadState��207

6.5��Binder�͑���——Binder Client��237

6.6��Android�ӿ������Z��——AIDL��242

6.7������Binder Server��254

��7�¡�Android����(d��ng)�^�̡�257

7.1��**��(g��)ϵ�y(t��ng)�M(j��n)�̣�init����257

7.1.1��init.rc�Z����257

7.1.2��init.rc��(sh��)��������260

7.2��ϵ�y(t��ng)�P(gu��n)�I����(w��)�Ć���(d��ng)��(ji��n)����261

7.2.1��Android��“DNS����(w��)��”

——ServiceManager��261

7.2.2��“����”�µľ��̺��M(j��n)��

——Zygote��261

7.2.3��Android��“ϵ�y(t��ng)����(w��)”

——SystemServer��274

7.2.4��Vold��External Storage

�惦(ch��)�O(sh��)�䡡276

7.3������������282

��8�¡�����Activity�ͽM���\(y��n)�Р�

�B(t��i)��ϵ�y(t��ng)�M(j��n)��——Activity��ManagerService��AMS����284

8.1��AMS���ܸ�����284

8.2��������(d��ng)ǰϵ�y(t��ng)��Activity

��B(t��i)——Activity Stack��286

8.3��startActivity���̡�288

8.4�����ͬһ�΄�(w��)��“����”——Activity Task��296

8.4.1��“���M(j��n)�ȳ�”——Last In��F(xi��n)irst Out��297

8.4.2������Activity Task��298

8.5��Instrumentation�C(j��)�ơ�300

��9�¡�GUIϵ�y(t��ng) — SurfaceFlinger��305

9.1��OpenGL ES�cEGL��305

9.2��Android��Ӳ���ӿ�——HAL��307

9.3��Android�K���@ʾ�O(sh��)���“����”

——Gralloc�cFramebuffer��309

9.4��Android�еı��ش��ڡ�313

9.4.1��FramebufferNativeWindow��315

9.4.2����(y��ng)�ó���˵ı��ش���——Surface��321

9.5��BufferQueueԔ�⡡325

9.5.1��BufferQueue�ă�(n��i)��ԭ����325

9.5.2��BufferQueue�еľ��_�^(q��)

���䡡328

9.5.3����(y��ng)�ó���ĵ����L�D

���̡�333

9.5.4����(y��ng)���cBufferQueue

���P(gu��n)ϵ��339

9.6��SurfaceFlinger��343

9.6.1��“�S��Ӌ(j��)��”——Project Butter��343

9.6.2��SurfaceFlinger����(d��ng)��347

9.6.3���ӿڵķ���(w��)��——Client��351

9.7��VSync�Įa(ch��n)����̎����355

9.7.1��VSync��̖(h��o)�Įa(ch��n)����

�ְl(f��)��355

9.7.2��VSync��̖(h��o)��̎����361

9.7.3��handleMessageTransaction��363

9.7.4��“�����ѽ�(j��ng)�^�r(sh��)/�oЧ����Ҫ��

���L��”——handleMessage��Invalidate��367

9.7.5���ϳ�ǰ�Ĝ�(zh��n)�乤��

——preComposition��369

9.7.6����Ҋ�^(q��)��

——rebuildLayerStacks��371

9.7.7����“Composition”��h(hu��n)��

——setUpHWComposer��375

9.7.8��doDebugFlashRegions��377

9.7.9��doComposition��377

��10�¡�GUIϵ�y(t��ng)֮“���ڹ���T”

—WMS��385

10.1��“���ڹ���T”——WMS�C����386

10.1.1��WMS����(d��ng)��388

10.1.2��WMS�Ļ��A(ch��)���ܡ�388

10.1.3��WMS�Ĺ�����ʽ��389

10.1.4��WMS��AMS�cActivity

�g��“(li��n)ϵ��390

10.2�����ڌ��ԡ�392

10.2.1����������c�Ӽ�(j��)��392

10.2.2�����ڲ���

��Window Policy����396

10.2.3�����ڌ���

��LayoutParams����398

10.3�����ڵ������^�̡�400

10.3.1��ϵ�y(t��ng)���ڵ������^�̡�400

10.3.2��Activity���ڵ�����

�^�̡�409

10.3.3���������ӌ�(sh��)����412

10.4��Surface������416

10.4.1��Surface��Ո(q��ng)���̣�relayout����416

10.4.2��Surface�Ŀ��M(j��n)�̂��f��420

10.4.3��Surface�ĘI(y��)��(w��)������422

10.5��performLayoutAndPlace

SurfacesLockedInner��423

10.6�����ڴ�С��Ӌ(j��)���^�̡�424

10.7������(d��ng)���ڵ������c�N����433

10.7.1������(d��ng)���ڵ����ӡ�433

10.7.2������(d��ng)���ڵ��N����437

10.8�����ڄ�(d��ng)����438

10.8.1�����ڄ�(d��ng)����͡�439

10.8.2����(d��ng)�����̸�ۙ——Window

StateAnimator��440

10.8.3��AppWindowAnimator��444

10.8.4����(d��ng)���Ĉ�(zh��)���^�̡�446

��11�¡�׌��Ľ����Ų�������GUI

ϵ�y(t��ng) — View�wϵ��452

11.1����(y��ng)�ó����е�View��ܡ�452

11.2��Activity��View Tree��

��(chu��ng)���^�̡�455

11.3����WMS��ע��(c��)���ڡ�461

11.4��ViewRoot�Ļ���������ʽ��463

11.5��View Tree�ı�v�r(sh��)�C(j��)��464

11.6��View Tree�ı�v���̡�468

11.7��View��ViewGroup���ԡ�477

11.7.1��View�Ļ������ԡ�477

11.7.2��ViewGroup�Č��ԡ�482

11.7.3��View��ViewGroup��

ViewParent��482

11.7.4��Callback�ӿڡ�482

11.8��“����“���߼�——Canvas��484

11.8.1��“�L��UI”——Skia��485

11.8.2����(sh��)��(j��)�н�——Surface.

lockCanvas��486

11.8.3�����i���ύ�Y(ji��)��——unlock

CanvasAndPost��490

11.9��draw��onDraw��491

11.10��View�е���Ϣ���f��497

11.10.1��View��TouchEvent

��Ͷ�f���̡�497

11.10.2��ViewGoup��Touch-

Event��Ͷ�f���̡�500

11.11��View��(d��ng)����504

11.12��UiAutomator��509

��12�¡�“�����ĵ������S������Դ�^

��ˮ��”— InputManager

Service�cݔ���¼���514

12.1���¼��ķ��514

12.2���¼���Ͷ�f���̡�517

12.2.1��InputManagerService��518

12.2.2��InputReaderThread��519

12.2.3��InputDispatcherThread��519

12.2.4��ViewRootImpl��(du��)�¼�

���ɰl(f��)��523

12.3���¼�ע�롡524

��13�¡���(y��ng)�ò���ͬ�|(zh��)�� — ���lϵ�y(t��ng)��526

13.1�����l���A(ch��)��527

13.1.1��•����527

13.1.2�����l��������惦(ch��)

�c�طš�527

13.1.3�����l�ɘӡ�528

13.1.4��Nyquist?CShannon�ɘ�

���ɡ�530

13.1.5��•�������w•��530

13.1.6��•������(j��)——Weber?C

Fechner law��531

13.1.7�����l�ļ���ʽ��532

13.2�����l��ܡ�532

13.2.1��Linux�е����l��ܡ�532

13.2.2��TinyAlsa��534

13.2.3��Androidϵ�y(t��ng)�е�

���l��ܡ�536

13.3�����lϵ�y(t��ng)�ĺ���——Audio-

Flinger��538

13.3.1��AudioFlinger����(w��)��

����(d��ng)���\(y��n)��538

13.3.2��AudioFlinger��(du��)���l

�O(sh��)�������540

13.3.3��PlaybackThread��

ѭ�h(hu��n)���w��547

13.3.4��AudioMixer��551

13.4�����Ե��ƶ���——Audio-

PolicyService��553

13.4.1��AudioPolicyService

������554

13.4.2��AudioPolicyService

�Ć���(d��ng)�^�̡�556

13.4.3��AudioPolicyService

�c���l�O(sh��)�䡡558

13.5�����l���Ļط�——AudioTrack��560

13.5.1��AudioTrack��(y��ng)��(sh��)����560

13.5.2��AudioPolicyService

��·�Ɍ�(sh��)�F(xi��n)��567

13.6�����l��(sh��)��(j��)����572

13.6.1��AudioTrack����l����573

13.6.2��AudioTrack��AudioFlinger

�g�Ĕ�(sh��)��(j��)������576

13.6.3��AudioMixer�е�

���l����582

13.7���������ơ�584

13.8�����lϵ�y(t��ng)���όӽ�����588

13.8.1���Ĺ������֡�588

13.8.2��MediaPlayer��589

13.8.3��MediaRecorder��592

13.8.4��һ��(g��)���͵Ķ�ý�w

��Ƴ���595

13.8.5��MediaRecorder

Դ�a������596

13.8.6��MediaPlayerService��(ji��n)����598

13.9��Android֧�ֵ�ý�w��ʽ��600

13.9.1�����l��ʽ��600

13.9.2��ҕ�l��ʽ��601

13.9.3���DƬ��ʽ��601

13.9.4���W(w��ng)�j(lu��)��ý�w��602

13.10��ID3��Ϣ��(ji��n)����602

13.11��Android��ý�w�ļ�������606

13.11.1��MediaStore��607

13.11.2����ý�w�ļ���Ϣ��

�惦(ch��)“�}��”

——MediaProvider��608

13.11.3����ý�w�ļ�������

��“���a(ch��n)��”

—MediaScanner��611



��3ƪ����(y��ng)��ԭ��ƪ

��14�¡�Intent��ƥ��Ҏ(gu��)�t��616

14.1��Intent���ԡ�616

14.2��Intent��ƥ��Ҏ(gu��)�t��618

14.3��Intentƥ��Դ�a��(ji��n)����624

��15�¡�APK��(y��ng)�ó�����YԴ�m�䡡628

15.1���YԴ��͡�629

15.1.1����B(t��i)�ɫ�YԴ��630

15.1.2���D���YԴ��631

15.1.3�������YԴ��632

15.1.4���ˆ��YԴ��633

15.1.5���ַ����YԴ��633

15.1.6����ʽ�YԴ��634

15.1.7�������YԴ��635

15.1.8�������YԴ��635

15.2���ṩ���x�YԴ��638

15.3��*���YԴ��ƥ�����̡�642

15.4����Ļ�m�䡡644

15.4.1����Ļ�m�����Ҫ����(sh��)��644

15.4.2������m�����Ļ��646

15.4.3���M�Q���ГQ��̎����648

��16�¡�Android�ַ����a��ʽ��650

16.1���ַ����a��ʽ������650

16.2��ISO/IEC 8859��651

16.3��ISO/IEC 10646��651

16.4��Unicode��652

16.5��String��͡�655

16.5.1����(g��u)��String��655

16.5.2��String��(du��)��N���a

�ļ��ݡ�656

��17�¡�Android��OpenGL ES��660

17.1��3D�D�ΌW(xu��)���A(ch��)��661

17.1.1��Ӌ(j��)��C(j��)3D�D�Ρ�661

17.1.2���D�ιܾ���662

17.2��Android�е�OpenGL ES��(ji��n)�顡664

17.3���D����ȾAPI—EGL��665

17.3.1��EGL�cOpenGL ES��665

17.3.2��egl.cfg��665

17.3.3��EGL�ӿڽ�����667

17.3.4��EGL��(sh��)����670

17.4����(ji��n)��OpenGL ES�_�l(f��)

—GLSurfaceView��670

17.5��OpenGL��������

—GLTracer��677

��18�¡�“ϵ�y(t��ng)��UI”——SystemUI��685

18.1��SystemUI�ĽM��Ԫ�ء�685

18.2��SystemUI��(sh��)�F(xi��n)��687

18.3��Android�ڼ��YԴ

—WallpaperService��694

18.3.1��WallPaperManager-

Service��695

18.3.2��ImageWallpaper��697

��19�¡�Android���õĹ���

“С���”——Widget�C(j��)�ơ�700

19.1��“���ܵ��ṩ��”——AppWidgetProvider��700

19.2��AppWidgetHost��702

��20�¡�Android��(y��ng)�ó���

�ľ��g�ʹ����707

20.1��“�����菽”���õ���������——Ant��707

20.2��ͨ�^�����о��g�ʹ��APK��708

20.3��APK���g�^��Ԕ�⡡709

20.4����Ϣ��ȫ���A(ch��)������711

20.5����(y��ng)������716

20.6����(y��ng)�ó�����Դ�a��(ji��n)����719

20.7��APK�غ�����(sh��)����724

��21�¡�Android̓�M�C(j��)��725

21.1��Android̓�M�C(j��)���A(ch��)֪�R(sh��)��725

21.1.1��Java̓�M�C(j��)���ĸ��725

21.1.2��LLVM���g����ܡ�734

21.1.3��Android�еĽ�(j��ng)��

���������㷨��736

21.1.4��Art��Dalvik֮��(zh��ng)��738

21.1.5��Art̓�M�C(j��)���w��ܡ�741

21.1.6��Android��(y��ng)���c

̓�M�C(j��)��742

21.1.7��Procedure Call Standard

for Arm Architecture

���^���{(di��o)��(bi��o)��(zh��n)����744

21.1.8��C 11��(bi��o)��(zh��n)���

���ԡ�746

21.2��Android̓�M�C(j��)�����ļ���ʽ

—Dex�ֹ�(ji��)�a��749

21.3��Android̓�M�C(j��)�����ļ���ʽ

—�Ɉ�(zh��)���ļ��Ļ�ʯELF��756

21.3.1��ELF�ļ���ʽ��756

21.3.2��Linuxƽ�_(t��i)��ELF�ļ��ļ��d�̈́�(d��ng)�B(t��i)朽��^�̡�764

21.3.3��Android Linker��

��(d��ng)�B(t��i)朽ӎ졡771

21.3.4��Signal Handler��

Fault Manager��782

21.4��Android̓�M�C(j��)�����ļ���ʽ

——“������”OAT��786

21.4.1��OAT�ļ���ʽ������786

21.4.2��OAT�ăɂ�(g��)���g�r(sh��)�C(j��)��793

21.5��Android̓�M�C(j��)�ĵ���

����(d��ng)���̡�806

21.6���ѹ������Ͷѿ��g��x��815

21.7��Android̓�M�C(j��)�еľ��̹�����823

21.7.1��Java���̵Ą�(chu��ng)���^�̡�823

21.7.2�����̵Ē����^�̡�827

21.8��Art̓�M�C(j��)�еĴ��a��(zh��)��

��ʽ�C����829

21.9��Art̓�M�C(j��)��“�И�ϵ�y(t��ng)”

——��(zh��)������֮Interpreter��836

21.10��Art̓�M�C(j��)��“�И�ϵ�y(t��ng)”——��(zh��)������֮JIT��839

21.10.1��JIT�س����������C(j��)��839

21.10.2��Android N�汾��JIT

���O(sh��)Ӌ(j��)Ŀ��(bi��o)�����ԡ�840

21.10.3��Profile Guided Compilation

��׷ۙ���g(sh��)����842

21.10.4��AOT Compilation

Daemon��843

21.11��Art̓�M�C(j��)��“�И�ϵ�y(t��ng)”

——��(zh��)������֮���ش��a��844

21.12��Android x86�汾����ARM��

�M(j��n)�ƴ��a——Native Bridge��864

21.13��Android��(y��ng)�ó����{(di��o)ԇ

ԭ��������871

21.13.1��Java���a�{(di��o)ԇ�c

JDWP�f(xi��)�h��872

21.13.2��Native���a�{(di��o)ԇ��879

21.13.3������GDB�{(di��o)ԇ

Android Art̓�M�C(j��)��885

��22�¡�Android��ȫ�C(j��)��͸����887

22.1��Android Security�C����887

22.2��SELinux��889

22.2.1��DAC��889

22.2.2��MAC��890

22.2.3������MAC��SELinux��890

22.3��Androidϵ�y(t��ng)��ȫ���o(h��)

������������892

22.3.1��**����Permission

�C(j��)�ơ�893

22.3.2���ӏ�(qi��ng)����DAC��UGO��

���o(h��)��896

22.3.3���K�O����SEAndroid��898

22.4��SEAndroid������899

22.4.1��SEAndroid��플�ģ�͡�899

22.4.2��SEAndroid���P(gu��n)���

Դ�a��900

22.4.3��SEAndroid��(bi��o)����Ҏ(gu��)�t��901

22.4.4�������Androidϵ�y(t��ng)��

�Զ��xSEAndroid��903

22.4.5��TE�ļ����Z��Ҏ(gu��)�t��905

22.4.6��SEAndroid�еĺ���

���w—init�M(j��n)�̡�907

22.4.7��SEAndroid�еĿ��w��912

22.5��Android�O(sh��)��Root��(ji��n)����913

22.6��APK�ļӹ̱��o(h��)������916

��4ƪ��Androidϵ�y(t��ng)����

��23�¡�IDE��Gradle��922

23.1��Gradle�ĺ���Ҫ�c(di��n)��922

23.1.1��Groovy�cGradle��923

23.1.2��Gradle���������ڡ�926

23.2��Gradle��Console�Z����927

23.3��Gradle Wrapper��Cache��929

23.4��Android Studio��Gradle��931

23.4.1��Gradle������A(ch��)֪�R(sh��)��931

23.4.2��Android Studio�е�

Gradle���g�_����932

��24�¡�ܛ���汾������937

24.1���汾������(ji��n)����937

24.2��Git���b��937

24.2.1��Linux�h(hu��n)���°��bGit��938

24.2.2��Windows�h(hu��n)����

���bGit��939

24.3��Git��ʹ�á�939

24.3.1�����A(ch��)���á�939

24.3.2���½��}�졡940

24.3.3���ļ���B(t��i)��942

24.3.4������ijЩ�ļ���943

24.3.5���ύ���¡�944

24.3.6���������944

24.4��Gitԭ����(ji��n)����945

24.4.1���ֲ�ʽ�汾ϵ�y(t��ng)�����c(di��n)��946































24.4.2����ȫɢ���㷨

—SHA-1��947

24.4.3��4��(g��)��Ҫ��(du��)��948

24.4.4������(g��)�^(q��)��953

24.4.5����֧�ĸ����c��(sh��)����954

��25�¡�ϵ�y(t��ng)�{(di��o)ԇ�o�����ߡ�958

25.1���f��ģ�M��——Emulator��958

25.1.1��QEMU��958

25.1.2��Android������

��QEMU��963

25.1.3��ģ�M�������_(t��i)

��Emulator Console����966

25.1.4����(sh��)������Android

ģ�M�����Ӵ��ڹ��ܡ�969

25.2����Android�DZ�Android��970

25.3�����ٽ����cģ�M������C(j��)��

ͨ������——ADB��972

25.3.1��ADB��ʹ�÷�����972

25.3.2��ADB�ĽM��Ԫ�ء�975

25.3.3��ADBԴ���a������976

25.3.4��ADB Protocol��981

25.4��SDK Layoutlib��984

25.5��TraceView��Dmtracedump��985

25.6��Systrace��987

25.7�����a���w�ʽy(t��ng)Ӌ(j��)��992

25.8��ģ�MGPSλ�á�995





չ�_ȫ��

��������Android��(n��i)���O(sh��)Ӌ(j��)˼�� ��2��(�����ƒ�(c��)) ���ߺ�(ji��n)��

�֌W(xu��)ɭ���������ڶ�ҿ��(gu��)��I(y��)��(d��n)���аl(f��)�͹��������������ڇ�(gu��)��(n��i)���(hu��)�h���s־�ϰl(f��)����ƪһ���������@�ö���(g��)�l(f��)���������F(xi��n)��ij����500��(qi��ng)�Ƽ���˾�߼�(j��)�������Y��ܘ�(g��u)�����ژI(y��)��Ҳ���^��Ӱ�����

��Ʒ�u(p��ng)Փ(0�l)
���o�u(p��ng)Փ����
�������]
����N
��݋���]
����픲�
�ЈD�W(w��ng)
�ھ��ͷ�