-- ·|­û / µù¥U -- ¡@
¡@±b¸¹¡G
¡@±K½X¡G
¡@ | µù¥U | §Ñ°O±K½X
3/26 ·s®Ñ¨ì¡I 3/19 ·s®Ñ¨ì¡I 3/14 ·s®Ñ¨ì¡I 12/12 ·s®Ñ¨ì¡I
ÁʮѬyµ{¡EQ & A¡E¯¸°È¯d¨¥ª©¡E«ÈªA«H½c
¢x 3ds Max¢x Maya¢x Rhino¢x After Effects¢x SketchUp¢x ZBrush¢x Painter¢x Unity¢x
¢x PhotoShop¢x AutoCad¢x MasterCam¢x SolidWorks¢x Creo¢x UG¢x Revit¢x Nuke¢x
¢x C#¢x C¢x C++¢x Java¢x ¹CÀ¸µ{¦¡¢x Linux¢x ´O¤J¦¡¢x PLC¢x FPGA¢x Matlab¢x
¢x Àb«È¢x ¸ê®Æ®w¢x ·j¯Á¤ÞÀº¢x ¼v¹³³B²z¢x Fluent¢x VR+AR¢x ANSYS¢x ²`«×¾Ç²ß¢x
¢x ³æ´¹¤ù¢x AVR¢x OpenGL¢x Arduino¢x Raspberry Pi¢x ¹q¸ô³]­p¢x Cadence¢x Protel¢x
¢x Hadoop¢x Python¢x Stm32¢x Cortex¢x Labview¢x ¤â¾÷µ{¦¡¢x Android¢x iPhone¢x
¥i¬d®Ñ¦W,§@ªÌ,ISBN,3dwoo®Ñ¸¹
¸Ô²Ó®ÑÄy¤ÀÃþ

Android¨t²Î¦w¥þ©M¤Ï½sĶ¹ê¾Ô

( ²Åé ¦r)
§@ªÌ¡G·¨®mÃþ§O¡G1. -> µ{¦¡³]­p -> ¤â¾÷µ{¦¡ -> Android
ĶªÌ¡G
¥Xª©ªÀ¡G¤H¥Á¶l¹q¥Xª©ªÀAndroid¨t²Î¦w¥þ©M¤Ï½sĶ¹ê¾Ô 3dWoo®Ñ¸¹¡G 42171
¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I

¡i¦³®w¦s¡j
NT°â»ù¡G 395 ¤¸

¥Xª©¤é¡G8/1/2015
­¶¼Æ¡G529
¥úºÐ¼Æ¡G0
¯¸ªø±ÀÂË¡G
¦L¨ê¡G¶Â¥Õ¦L¨ê»y¨t¡G ( ²Åé ª© )
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R
(½Ð¥ýµn¤J·|­û)
ISBN¡G9787115393036
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç
(²Åé®Ñ¤W©Ò­z¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, ­YŪªÌ»Ý­n½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ)
§@ªÌ§Ç¡G

ĶªÌ§Ç¡G

«e¨¥¡G

¤º®e²¤¶¡G

¡@¡@¡mAndroid¨t²Î¦w¥þ©M¤Ï½sĶ¹ê¾Ô¡n´`§Çº¥¶i¦aÁ¿¸Ñ¤FAndroid¨t²Î¦w¥þ¤è­±ªº°ò¥»ª¾ÃÑ¡A±qAndroid¨t²Î¤¶²Ð¶}©l¨ìºî¦X¹ê¨Òªº¹ê¾Ô¹Lµ{¡A¥þµ{­åªR¤FAndroid¨t²Î¦w¥þ¡BÀ³¥Î¦w¥þ¶}µo©M¥[±K¡B¸Ñ±K¤è­±ªº®Ö¤ßª¾ÃÑ¡C¥þ®Ñ¦@17³¹¡A¥D­n¤º®e¥]¬A¡AAndroid§Þ³N®Ö¤ß®Ø¬[¤ÀªR¡BÀò¨ú¦}½sĶ·½¥N½X¡BAndroid¨t²Îªº¦w¥þ¾÷¨î¡B¤º¦s¦w¥þ¾÷¨î¡BBinder³q«H¦w¥þ¾÷¨î¡BAndroidµêÀÀ¾÷°ò¦¡BDalvik VMªº¹B§@¬yµ{¡BDEX¤å¥ó¸Ô¸Ñ¡B½s¼g¦w¥þªºÀ³¥Îµ{§Ç¡BÀ³¥Î¦w¥þµ¦²¤¡B¤å¥ó¥[±K¡B¹q¸Ü¨t²Îªº¦w¥þ¾÷¨î¡Bµu«H¨t²Îªº¦w¥þ¾÷¨î¡Bºôµ¸¨¾¤õùÙ¨t²Î¡B¤å¥ó¥[±K¨t²Îµ¥®Ö¤ß§Þ³N¡C
¡mAndroid¨t²Î¦w¥þ©M¤Ï½sĶ¹ê¾Ô¡n¾A¦XAndroidªì¾ÇªÌ¡BAndroidÀ³¥Î¶}µoªÌ¡BAndroid¦w¥þ¬[ºc¬ã¨s¤H­û¡BAndroid©³¼h¶}µo¤H­û©MAndroid·½¥N½X¤ÀªR¤H­û¾Ç²ß¡A¤]¥i¥H§@¬°¬ÛÃö°ö°V¾Ç®Õ©M¤j±M°|®Õ¬ÛÃö±M·~ªº±Ð¾Ç¥Î®Ñ¡C
¥Ø¿ý¡G

²Ä1³¹ Android§Þ³N·§­z 1
1.1 ´¼¯à¤â¾÷¨t²Î¤¶²Ð 1
1.2 ·f«ØAndroidÀ³¥Î¶}µoÀô¹Ò 2
1.2.1 ¦w¸ËAndroid SDKªº
¨t²Î­n¨D 2
1.2.2 ¦w¸ËJDK 2
1.2.3 Àò¨ú¦}¦w¸ËEclipse©M
Android SDK 5
1.2.4 ¦w¸ËADT 7
1.2.5 ³]©wAndroid SDK Home 8
1.2.6 ÅçÃÒ¶}µoÀô¹Ò 9
1.2.7 ³Ð«ØAndroidµêÀÀ³]³Æ¡]AVD¡^ 9
1.2.8 ±Ò°ÊAVD¼ÒÀÀ¾¹ 10
1.2.9 ¸Ñ¨M·f«ØÀô¹Ò¹Lµ{¤¤
ªº±`¨£°ÝÃD 12
²Ä2³¹ Android§Þ³N®Ö¤ß®Ø¬[¤ÀªR 15
2.1 ²ªRAndroid¦w¸Ë¤å¥ó 15
2.1.1 Android SDK¥Ø¿ýµ²ºc 15
2.1.2 android.jar¤Î¤º³¡µ²ºc 16
2.1.3 ¾\ŪSDKÀ°§U¤åÀÉ 16
2.1.4 ±`¥ÎªºSDK¤u¨ã 17
2.2 ºt¥Ü©x¤è¹ê¨Ò 19
2.3 ­åªRAndroid¨t²Î¬[ºc 23
2.3.1 AndroidÅé¨tµ²ºc¤¶²Ð 23
2.3.2 AndroidÀ³¥Î¤uµ{
¤å¥ó²Õ¦¨ 25
2.4 ²­z¤­¤j²Õ¥ó 27
2.4.1 ¥ÎActivity¨Óªí²{¬É­± 27
2.4.2 ¥ÎIntent©MIntent Filters
¹ê²{¤Á´« 28
2.4.3 Service¬°§AªA°È 28
2.4.4 ¥ÎBroadcast Intent/Receiverµo°e¼s¼½ 29
2.4.5 ¥ÎContent Provider
¦sÀx¼Æ¾Ú 29
2.5 ¶iµ{©M½uµ{ 29
2.5.1 ¥ý¬Ý¶iµ{ 29
2.5.2 ¦A¬Ý½uµ{ 30
2.5.3 À³¥Îµ{§Çªº¥Í©R©P´Á 30
²Ä3³¹ Àò¨ú¦}½sĶ·½½X 33
3.1 ¦bLinux¨t²Î¤¤Àò¨ú
Android·½½X 33
3.2 ¦bWindows¥­»OÀò¨ú
Android·½½X 34
3.3 ¤ÀªRAndroid·½½Xµ²ºc 36
3.3.1 À³¥Îµ{§Ç 38
3.3.2 À³¥Îµ{§Ç®Ø¬[ 39
3.3.3 ¨t²ÎªA°È 39
3.3.4 ¨t²Îµ{§Ç®w 41
3.3.5 ¨t²Î¹B¦æ®w 44
3.3.6 µw¥ó©â¶H¼h 44
3.4 ½sĶ·½½X 45
3.4.1 ·f«Ø½sĶÀô¹Ò 46
3.4.2 ¶}©l½sĶ 46
3.4.3 ¦b¼ÒÀÀ¾¹¤¤¹B¦æ 47
3.4.4 ±`¨£ªº¿ù»~¤ÀªR 48
3.4.5 ¹ê½îºt½m¡X¡Xºt¥Ü¨âºØ½sĶ
Androidµ{§Çªº¤èªk 49
3.5 ½sĶAndroid Kernel 52
3.5.1 Àò¨úGoldfish¤º®Ö¥N½X 52
3.5.2 Àò¨úMSM¤º®Ö¥N½X 55
3.5.3 Àò¨úOMAP¤º®Ö¥N½X 55
3.5.4 ½sĶAndroidªºLinux
¤º®Ö 55
3.6 ½sĶ·½½X¥Í¦¨SDK 57
²Ä4³¹ Android¨t²Îªº¦w¥þ¾÷¨î 61
4.1 Android¦w¥þ¾÷¨î·§­z 61
4.1.1 Androidªº¦w¥þ¾÷¨î¼Ò«¬ 61
4.1.2 Androidªº¦w¥þ®Ø¬[·§­z 62
4.2 ¤ÀªRLinux¨t²Îªº¦w¥þ¾÷¨î 63
4.2.1 Linux¥Î¤áÅv­­°ò¦ 63
4.2.2 ¶iµ{ 68
4.3 ¤ÀªRAndroid¨t²Îªº¦w¥þ¾÷¨î 70
4.3.1 ¨F½c¼Ò«¬¤¶²Ð 70
4.3.2 À³¥Îµ{§Çªº¦w¥þ¾÷¨î 72
4.3.3 ¤À°Ï¥[¸ü¾÷¨î 73
²Ä5³¹ ¤º¦s¦w¥þ¾÷¨î¡X¡X°Î¦W¦@¨É
¤º¦s¨t²Î 74
5.1 ¤ÀªRAshmemÅX°Êµ{§Ç 74
5.1.1 °ò¦¼Æ¾Úµ²ºc 74
5.1.2 ªì©l¤Æ³B²z 75
5.1.3 ¥´¶}°Î¦W¦@¨É¤º¦s
³]³Æ¤å¥ó 76
5.1.4 ¤º¦s¬M®g 78
5.1.5 ¹ê²{Ū¼g¾Þ§@ 79
5.1.6 Âê©w©M¸ÑÂê 81
5.1.7 ¦^¦¬¤º¦s¶ô 86
5.2 ¤ÀªRC++³X°Ý±µ¤f¼h 87
5.2.1 ±µ¤fMemoryBase 87
5.2.2 «È¤áºÝ¹ê²{ 90
5.2.3 ±µ¤fMemoryBase 94
5.3 ¤ÀªRJava³X°Ý±µ¤f¼h 97
5.4 ¤º¦sÀu¤Æ¾÷¨î 100
5.4.1 sp©Mwp²ªR 100
5.4.2 ¸Ô¸Ñ´¼¯à«ü°w 102
5.5 Android¤º¦s¨t²Îªº¦w¥þ
¾÷¨î¤ÀªR 118
5.5.1 Ashmem°Î¦W¦@¨É¤º¦s
ªº¾÷²z 119
5.5.2 ¨Ï¥ÎLow Memory Killer
¾÷¨î¹ê²{¦w¥þ©M°ª®Ä 119
²Ä6³¹ Binder³q«H¦w¥þ¾÷¨î¡]¤W¡^ 121
6.1 Binder¾÷¨î°ò¦ 121
6.1.1 ¿ï¾ÜBinder¾÷¨îªº
­ì¦]¡X¡X²¼ä§Ö³t¡B
§C¯Ó¤º¦s¡B§ó¥[¦w¥þ 121
6.1.2 Binder¦w¥þ¾÷¨îªº
¥²­n©Ê 122
6.1.3 Androidªº¶iµ{¶¡³q«H
¡]IPC¡^¾÷¨îBinder 122
6.1.4 Service Manager¬OBinder
¾÷¨îªº¤W¤U¤åºÞ²zªÌ 123
6.1.5 Service ManagerªA°È 137
6.2 ¤ÀªRBinderÅX°Êµ{§Ç 140
6.2.1 ¤ÀªR¼Æ¾Úµ²ºc 140
6.2.2 ¤ÀªR³]³Æªì©l¤Æ 150
6.2.3 ¥´¶}Binder³]³Æ¤å¥ó 151
6.2.4 ¤º¦s¬M®g 152
6.2.5 ÄÀ©ñª«²z­¶­± 156
6.2.6 ¤À°t¤º®Ö½w¨R°Ï 157
6.2.7 ÄÀ©ñ¤º®Ö½w¨R°Ï 158
6.2.8 ¬d¸ß¤º®Ö½w¨R°Ï 160
²Ä7³¹ Binder³q«H¦w¥þ¾÷¨î¡]¤U¡^ 162
7.1 Binder«Ê¸Ë®w 162
7.1.1 ÃþBBinder 163
7.1.2 ÃþBpRefBase 165
7.1.3 ÃþIPCThreadState 166
7.2 ªì©l¤ÆJava¼hBinder®Ø¬[ 168
7.3 ¤ÀªRMediaServerªº³q«H¾÷¨î 170
7.3.1 MediaServerªº¤J¤f¨ç¼Æ 170
7.3.2 ProcessState 171
7.3.3 defaultServiceManager 173
7.3.4 ª`¥UMediaPlayerService 179
7.3.5 ¤ÀªRStartThread Pool©M
join Thread Pool 188
7.4 Á`µ²¶iµ{³q«H¾÷¨îªº¦w¥þ©Ê 190
7.4.1 ¶iµ{¥ý½uµ{¦w¥þ 190
7.4.2 »·µ{¹Lµ{½Õ¥Î¾÷¨î
¡]RPC¡^ 191
7.4.3 ¹ê²{½uµ{¦w¥þ¤èªk 192
7.4.4 Binder¤¤ªº¦w¥þµ¦²¤ 193
²Ä8³¹ AndroidµêÀÀ¾÷°ò¦ 194
8.1 Dalvik VM©MJVMªº®t²§ 194
8.2 DalvikµêÀÀ¾÷ªº¥D­n¯S©º 195
8.3 Dalvik VM¬[ºc 196
8.3.1 DalvikµêÀÀ¾÷ªº¥N½Xµ²ºc 196
8.3.2 dx¤u¨ã 198
8.3.3 Dalvik VMªº¶iµ{ºÞ²z 198
8.3.4 Androidªºªì©l¤Æ¬yµ{ 198
8.4 Dalvik VM±±¨îVM©R¥O¸Ô¸Ñ 199
8.4.1 °ò¥»©R¥O 199
8.4.2 ÂX®iªºJNIÀË´ú 199
8.4.3 Â_¨¥ 200
8.4.4 ¦r¸`½X®ÕÅç©MÀu¤Æ 200
8.4.5 Dalvik VMªº¹B¦æ¼Ò¦¡ 201
8.4.6 ¦ºÂê¹w´ú 201
8.4.7 dump°ï´Ì°lÂÜ 202
8.4.8 dex¤å¥ó©M®ÕÅç 202
8.4.9 ²£¥Í¼Ð§Ó¦ì 202
8.5 Dalvik VM¶iµ{ºÞ²z 202
8.5.1 Zygote°ò¦ 202
8.5.2 Dalvikªº¶iµ{¼Ò«¬ 211
8.5.3 Dalvikªº¶iµ{³q«H 215
8.6 Zygote¡]¥¥¨|¡^¶iµ{ 218
8.6.1 Zygote°ò¦ 218
8.6.2 ¤ÀªRZygoteªº±Ò°Ê¹Lµ{ 219
²Ä9³¹ Dalvik VMªº¹B§@¬yµ{ 233
9.1 Dalvik VM¬ÛÃöªº¥i°õ¦æµ{§Ç 233
9.1.1 dalvikvm¡Bdvz©M
app_process²¤¶ 233
9.1.2 ¹ï¤ñapp_process©M
dalvikvmªº°õ¦æ¹Lµ{ 234
9.2 ªì©l¤ÆDalvik VM 236
9.2.1 ¶}©lµêÀÀ¾÷ªº·Ç³Æ¤u§@ 236
9.2.2 ªì©l¤Æ¸òÂÜÅã¥Ü¨t²Î 237
9.2.3 ªì©l¤Æ©U§£¦^¦¬¾¹ 237
9.2.4 ªì©l¤Æ½uµ{¦Cªí©M
¥D½uµ{Àô¹Ò°Ñ¼Æ 237
9.2.5 ¤À°t¤º³¡¾Þ§@¤èªkªº
ªí®æ¤º¦s 238
9.2.6 ªì©l¤ÆµêÀÀ¾÷ªº«ü¥O½X
¬ÛÃöªº¤º®e 238
9.2.7 ¤À°t«ü¥O±H¦s¾¹ª¬ºA
ªº¤º¦s 239
9.2.8 ¤À°t«ü¥O±H¦s¾¹ª¬ºA
ªº¤º¦s©M³Ì°ò¥»¥Îªº
Java®w 239
9.2.9 ªì©l¤Æ¨Ï¥ÎªºJavaÃþ®w
½uµ{Ãþ 240
9.2.10 ªì©l¤ÆµêÀÀ¾÷¨Ï¥Îªº
²§±`JavaÃþ®w 241
9.2.11 ªì©l¤Æ¨ä¥L¹ï¶H 242
9.3 ±Ò°ÊZygote 250
9.3.1 ¦binit.rc¤¤°t¸mzygote
±Ò°Ê°Ñ¼Æ 250
9.3.2 ±Ò°ÊSocketªA°ÈºÝ¤f 250
9.3.3 ¥[¸üpreload-classes 251
9.3.4 ¥[¸üpreload-resources 252
9.4 ±Ò°Ê
§Ç¡G