android framework框架分析

91 篇文章 10 订阅

framework 目录为框架层 代码,framework 为android四个层次中的第二层。


frameworks/
├── base
│   ├── Android.mk
│   ├── api
│   │   ├── 1.xml
│   │   ├── 2.xml
│   │   ├── 3.xml
│   │   ├── 4.xml
│   │   ├── 5.xml
│   │   ├── 6.xml
│   │   ├── 7.xml
│   │   ├── 8.xml
│   │   └── current.xml
│   ├── awt
│   │   ├── Android.mk
│   │   ├── com
│   │   │   └── android
│   │   ├── java
│   │   │   ├── awt
│   │   │   └── beans
│   │   ├── javax
│   │   │   └── imageio
│   │   ├── org
│   │   │   └── apache
│   │   └── resources
│   │       └── org
│   ├── build
│   │   └── jarjar-rules.txt
│   ├── camera
│   │   ├── libcameraservice
│   │   │   ├── Android.mk
│   │   │   ├── CameraHardwareStub.cpp
│   │   │   ├── CameraHardwareStub.h
│   │   │   ├── CameraService.cpp
│   │   │   ├── CameraService.h
│   │   │   ├── CannedJpeg.h
│   │   │   ├── FakeCamera.cpp
│   │   │   └── FakeCamera.h
│   │   └── tests
│   │       └── CameraServiceTest
│   ├── CleanSpec.mk
│   ├── cmds
│   │   ├── am
│   │   │   ├── am
│   │   │   ├── Android.mk
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── src
│   │   ├── app_process
│   │   │   ├── Android.mk
│   │   │   ├── app_main.cpp
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   └── NOTICE
│   │   ├── backup
│   │   │   ├── Android.mk
│   │   │   ├── backup.cpp
│   │   │   └── NOTICE
│   │   ├── bmgr
│   │   │   ├── Android.mk
│   │   │   ├── bmgr
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── src
│   │   ├── bootanimation
│   │   │   ├── Android.mk
│   │   │   ├── BootAnimation.cpp
│   │   │   ├── BootAnimation.h
│   │   │   └── bootanimation_main.cpp
│   │   ├── bugreport
│   │   │   ├── Android.mk
│   │   │   └── bugreport.c
│   │   ├── dumpstate
│   │   │   ├── Android.mk
│   │   │   ├── dumpstate.c
│   │   │   ├── dumpstate.h
│   │   │   └── utils.c
│   │   ├── dumpsys
│   │   │   ├── Android.mk
│   │   │   ├── dumpsys.cpp
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   └── NOTICE
│   │   ├── ime
│   │   │   ├── Android.mk
│   │   │   ├── ime
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── src
│   │   ├── input
│   │   │   ├── Android.mk
│   │   │   ├── input
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── src
│   │   ├── installd
│   │   │   ├── Android.mk
│   │   │   ├── commands.c
│   │   │   ├── installd.c
│   │   │   ├── installd.h
│   │   │   └── utils.c
│   │   ├── keystore
│   │   │   ├── Android.mk
│   │   │   ├── keystore.c
│   │   │   ├── keystore_cli.c
│   │   │   ├── keystore_get.h
│   │   │   └── keystore.h
│   │   ├── pm
│   │   │   ├── Android.mk
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   ├── pm
│   │   │   └── src
│   │   ├── rawbu
│   │   │   ├── Android.mk
│   │   │   ├── backup.cpp
│   │   │   └── NOTICE
│   │   ├── runtime
│   │   │   ├── Android.mk
│   │   │   ├── main_runtime.cpp
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   ├── ServiceManager.cpp
│   │   │   ├── ServiceManager.h
│   │   │   ├── SignalHandler.cpp
│   │   │   └── SignalHandler.h
│   │   ├── service
│   │   │   ├── Android.mk
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── service.cpp
│   │   ├── servicemanager
│   │   │   ├── Android.mk
│   │   │   ├── bctest.c
│   │   │   ├── binder.c
│   │   │   ├── binder.h
│   │   │   └── service_manager.c
│   │   ├── stagefright
│   │   │   ├── Android.mk
│   │   │   ├── audioloop.cpp
│   │   │   ├── record.cpp
│   │   │   ├── SineSource.cpp
│   │   │   ├── SineSource.h
│   │   │   ├── stagefright.cpp
│   │   │   └── WaveWriter.h
│   │   ├── surfaceflinger
│   │   │   ├── Android.mk
│   │   │   └── main_surfaceflinger.cpp
│   │   ├── svc
│   │   │   ├── Android.mk
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   ├── src
│   │   │   └── svc
│   │   └── system_server
│   │       ├── Android.mk
│   │       ├── library
│   │       ├── MODULE_LICENSE_APACHE2
│   │       ├── NOTICE
│   │       └── system_main.cpp
│   ├── core
│   │   ├── config
│   │   │   ├── debug
│   │   │   ├── ndebug
│   │   │   ├── README.txt
│   │   │   └── sdk
│   │   ├── java
│   │   │   ├── android
│   │   │   ├── com
│   │   │   ├── jarjar-rules.txt
│   │   │   └── overview.html
│   │   ├── jni
│   │   │   ├── ActivityManager.cpp
│   │   │   ├── android
│   │   │   ├── android_backup_BackupDataInput.cpp
│   │   │   ├── android_backup_BackupDataOutput.cpp
│   │   │   ├── android_backup_BackupHelperDispatcher.cpp
│   │   │   ├── android_backup_FileBackupHelperBase.cpp
│   │   │   ├── android_bluetooth_BluetoothAudioGateway.cpp
│   │   │   ├── android_bluetooth_BluetoothSocket.cpp
│   │   │   ├── android_bluetooth_common.cpp
│   │   │   ├── android_bluetooth_common.h
│   │   │   ├── android_bluetooth_HeadsetBase.cpp
│   │   │   ├── android_bluetooth_ScoSocket.cpp
│   │   │   ├── android_database_CursorWindow.cpp
│   │   │   ├── android_database_SQLiteCompiledSql.cpp
│   │   │   ├── android_database_SQLiteDatabase.cpp
│   │   │   ├── android_database_SQLiteDebug.cpp
│   │   │   ├── android_database_SQLiteProgram.cpp
│   │   │   ├── android_database_SQLiteQuery.cpp
│   │   │   ├── android_database_SQLiteStatement.cpp
│   │   │   ├── android_ddm_DdmHandleNativeHeap.cpp
│   │   │   ├── android_debug_JNITest.cpp
│   │   │   ├── android_emoji_EmojiFactory.cpp
│   │   │   ├── android_graphics_PixelFormat.cpp
│   │   │   ├── android_hardware_Camera.cpp
│   │   │   ├── android_hardware_SensorManager.cpp
│   │   │   ├── android_location_GpsLocationProvider.cpp
│   │   │   ├── android_media_AudioRecord.cpp
│   │   │   ├── android_media_AudioSystem.cpp
│   │   │   ├── android_media_AudioTrack.cpp
│   │   │   ├── android_media_JetPlayer.cpp
│   │   │   ├── android_media_ToneGenerator.cpp
│   │   │   ├── android_message_digest_sha1.cpp
│   │   │   ├── Android.mk
│   │   │   ├── android_net_ethernet.cpp
│   │   │   ├── android_net_LocalSocketImpl.cpp
│   │   │   ├── android_net_NetUtils.cpp
│   │   │   ├── android_net_TrafficStats.cpp
│   │   │   ├── android_net_wifi_Wifi.cpp
│   │   │   ├── android_nio_utils.cpp
│   │   │   ├── android_nio_utils.h
│   │   │   ├── android_opengl_GLES10.cpp
│   │   │   ├── android_opengl_GLES10Ext.cpp
│   │   │   ├── android_opengl_GLES11.cpp
│   │   │   ├── android_opengl_GLES11Ext.cpp
│   │   │   ├── android_opengl_GLES20.cpp
│   │   │   ├── android_os_Debug.cpp
│   │   │   ├── android_os_FileUtils.cpp
│   │   │   ├── android_os_MemoryFile.cpp
│   │   │   ├── android_os_ParcelFileDescriptor.cpp
│   │   │   ├── android_os_Power.cpp
│   │   │   ├── android_os_StatFs.cpp
│   │   │   ├── android_os_SystemClock.cpp
│   │   │   ├── android_os_SystemProperties.cpp
│   │   │   ├── android_os_UEventObserver.cpp
│   │   │   ├── android_pim_EventRecurrence.cpp
│   │   │   ├── AndroidRuntime.cpp
│   │   │   ├── android_security_Md5MessageDigest.cpp
│   │   │   ├── android_server_BluetoothA2dpService.cpp
│   │   │   ├── android_server_BluetoothEventLoop.cpp
│   │   │   ├── android_server_BluetoothHidService.cpp
│   │   │   ├── android_server_BluetoothService.cpp
│   │   │   ├── android_server_Watchdog.cpp
│   │   │   ├── android_text_AndroidBidi.cpp
│   │   │   ├── android_text_AndroidCharacter.cpp
│   │   │   ├── android_text_format_Time.cpp
│   │   │   ├── android_text_KeyCharacterMap.cpp
│   │   │   ├── android_util_AssetManager.cpp
│   │   │   ├── android_util_Binder.cpp
│   │   │   ├── android_util_Binder.h
│   │   │   ├── android_util_EventLog.cpp
│   │   │   ├── android_util_FileObserver.cpp
│   │   │   ├── android_util_FloatMath.cpp
│   │   │   ├── android_util_Log.cpp
│   │   │   ├── android_util_Process.cpp
│   │   │   ├── android_util_StringBlock.cpp
│   │   │   ├── android_util_XmlBlock.cpp
│   │   │   ├── android_view_Display.cpp
│   │   │   ├── android_view_Surface.cpp
│   │   │   ├── android_view_ViewRoot.cpp
│   │   │   ├── BindTest.cpp
│   │   │   ├── com_android_internal_graphics_NativeUtils.cpp
│   │   │   ├── com_android_internal_os_ZygoteInit.cpp
│   │   │   ├── com_google_android_gles_jni_EGLImpl.cpp
│   │   │   ├── com_google_android_gles_jni_GLImpl.cpp
│   │   │   ├── CursorWindow.cpp
│   │   │   ├── CursorWindow.h
│   │   │   ├── GraphicsExternGlue.h
│   │   │   ├── GraphicsRegisterGlue.h
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   ├── sqlite3_exception.h
│   │   │   ├── Time.cpp
│   │   │   └── TimeUtils.h
│   │   ├── res
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── assets
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── res
│   │   └── tests
│   │       ├── ConnectivityManagerTest
│   │       ├── coretests
│   │       └── hosttests
│   ├── data
│   │   ├── etc
│   │   │   ├── android.hardware.camera.autofocus.xml
│   │   │   ├── android.hardware.camera.flash-autofocus.xml
│   │   │   ├── android.hardware.camera.xml
│   │   │   ├── android.hardware.location.gps.xml
│   │   │   ├── android.hardware.location.xml
│   │   │   ├── android.hardware.sensor.accelerometer.xml
│   │   │   ├── android.hardware.sensor.compass.xml
│   │   │   ├── android.hardware.sensor.light.xml
│   │   │   ├── android.hardware.sensor.proximity.xml
│   │   │   ├── android.hardware.telephony.cdma.xml
│   │   │   ├── android.hardware.telephony.gsm.xml
│   │   │   ├── android.hardware.touchscreen.multitouch.distinct.xml
│   │   │   ├── android.hardware.touchscreen.multitouch.xml
│   │   │   ├── android.hardware.touchscreen.xml
│   │   │   ├── android.hardware.wifi.xml
│   │   │   ├── Android.mk
│   │   │   ├── handheld_core_hardware.xml
│   │   │   └── platform.xml
│   │   ├── fonts
│   │   │   ├── Ahem.ttf
│   │   │   ├── Android.mk
│   │   │   ├── Clockopia.ttf
│   │   │   ├── DroidSansArabic.ttf
│   │   │   ├── DroidSans-Bold.ttf
│   │   │   ├── DroidSansFallbackLegacy.ttf
│   │   │   ├── DroidSansFallback.ttf
│   │   │   ├── DroidSansHebrew.ttf
│   │   │   ├── DroidSansJapanese.ttf
│   │   │   ├── DroidSansMono.ttf
│   │   │   ├── DroidSansThai.ttf
│   │   │   ├── DroidSans.ttf
│   │   │   ├── DroidSerif-BoldItalic.ttf
│   │   │   ├── DroidSerif-Bold.ttf
│   │   │   ├── DroidSerif-Italic.ttf
│   │   │   ├── DroidSerif-Regular.ttf
│   │   │   ├── fonts.xml
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── README.txt
│   │   └── sounds
│   │       ├── Alarm_Beep_01.ogg
│   │       ├── Alarm_Beep_02.ogg
│   │       ├── Alarm_Beep_03.ogg
│   │       ├── Alarm_Buzzer.ogg
│   │       ├── Alarm_Classic.ogg
│   │       ├── Alarm_Rooster_01.ogg
│   │       ├── Alarm_Rooster_02.ogg
│   │       ├── AudioPackage2.mk
│   │       ├── AudioPackage3.mk
│   │       ├── AudioPackage4.mk
│   │       ├── effects
│   │       ├── F1_MissedCall.ogg
│   │       ├── F1_New_MMS.ogg
│   │       ├── F1_New_SMS.ogg
│   │       ├── F1_NewVoicemail.ogg
│   │       ├── newwavelabs
│   │       ├── notifications
│   │       ├── OriginalAudio.mk
│   │       ├── ring3.ogg
│   │       ├── Ring_Classic_01.ogg
│   │       ├── Ring_Classic_02.ogg
│   │       ├── Ring_Classic_03.ogg
│   │       ├── Ring_Classic_04.ogg
│   │       ├── Ring_Classic_05.ogg
│   │       ├── Ring_Digital_01.ogg
│   │       ├── Ring_Digital_02.ogg
│   │       ├── Ring_Digital_03.ogg
│   │       ├── Ring_Digital_04.ogg
│   │       ├── Ring_Digital_05.ogg
│   │       ├── ringer.ogg
│   │       ├── Ring_Synth_01.ogg
│   │       ├── Ring_Synth_02.ogg
│   │       ├── Ring_Synth_03.ogg
│   │       ├── Ring_Synth_04.ogg
│   │       ├── Ring_Synth_05.ogg
│   │       ├── ringtones
│   │       └── testfiles
│   ├── docs
│   │   ├── docs-documentation-redirect.html
│   │   ├── docs-redirect.html
│   │   ├── docs-redirect-index.html
│   │   ├── docs-samples-redirect.html
│   │   ├── html
│   │   │   ├── app.yaml
│   │   │   ├── community
│   │   │   ├── favicon.ico
│   │   │   ├── googleb38c1d60b7ba5d19.html
│   │   │   ├── guide
│   │   │   ├── images
│   │   │   ├── index.jd
│   │   │   ├── intl
│   │   │   ├── license.jd
│   │   │   ├── mwc2010
│   │   │   ├── offline.jd
│   │   │   ├── reference
│   │   │   ├── resources
│   │   │   ├── robots.txt
│   │   │   ├── sdk
│   │   │   ├── search.jd
│   │   │   ├── security_at_android_dot_com.txt
│   │   │   ├── shareables
│   │   │   ├── sitemap-intl.txt
│   │   │   ├── sitemap.txt
│   │   │   └── videos
│   │   └── overview-ext.html
│   ├── ethernet
│   │   └── java
│   │       └── android
│   ├── graphics
│   │   ├── java
│   │   │   ├── android
│   │   │   └── com
│   │   ├── jni
│   │   │   ├── Android.mk
│   │   │   └── android_renderscript_RenderScript.cpp
│   │   └── tests
│   │       └── graphicstests
│   ├── include
│   │   ├── android_runtime
│   │   │   ├── ActivityManager.h
│   │   │   ├── AndroidRuntime.h
│   │   │   └── android_util_AssetManager.h
│   │   ├── binder
│   │   │   ├── Binder.h
│   │   │   ├── BpBinder.h
│   │   │   ├── IBinder.h
│   │   │   ├── IInterface.h
│   │   │   ├── IMemory.h
│   │   │   ├── IPCThreadState.h
│   │   │   ├── IPermissionController.h
│   │   │   ├── IServiceManager.h
│   │   │   ├── MemoryBase.h
│   │   │   ├── MemoryDealer.h
│   │   │   ├── MemoryHeapBase.h
│   │   │   ├── MemoryHeapPmem.h
│   │   │   ├── Parcel.h
│   │   │   ├── Permission.h
│   │   │   └── ProcessState.h
│   │   ├── camera
│   │   │   ├── Camera.h
│   │   │   ├── CameraHardwareInterface.h
│   │   │   ├── CameraParameters.h
│   │   │   ├── ICameraClient.h
│   │   │   ├── ICamera.h
│   │   │   └── ICameraService.h
│   │   ├── media
│   │   │   ├── AudioRecord.h
│   │   │   ├── AudioSystem.h
│   │   │   ├── AudioTrack.h
│   │   │   ├── IAudioFlingerClient.h
│   │   │   ├── IAudioFlinger.h
│   │   │   ├── IAudioPolicyService.h
│   │   │   ├── IAudioRecord.h
│   │   │   ├── IAudioTrack.h
│   │   │   ├── IMediaDeathNotifier.h
│   │   │   ├── IMediaMetadataRetriever.h
│   │   │   ├── IMediaPlayerClient.h
│   │   │   ├── IMediaPlayer.h
│   │   │   ├── IMediaPlayerService.h
│   │   │   ├── IMediaRecorder.h
│   │   │   ├── IOMX.h
│   │   │   ├── JetPlayer.h
│   │   │   ├── mediametadataretriever.h
│   │   │   ├── MediaMetadataRetrieverInterface.h
│   │   │   ├── mediaplayer.h
│   │   │   ├── MediaPlayerInterface.h
│   │   │   ├── MediaProfiles.h
│   │   │   ├── MediaRecorderBase.h
│   │   │   ├── mediarecorder.h
│   │   │   ├── mediascanner.h
│   │   │   ├── Metadata.h
│   │   │   ├── PVMediaRecorder.h
│   │   │   ├── PVMetadataRetriever.h
│   │   │   ├── PVPlayer.h
│   │   │   ├── stagefright
│   │   │   ├── thread_init.h
│   │   │   └── ToneGenerator.h
│   │   ├── pim
│   │   │   └── EventRecurrence.h
│   │   ├── private
│   │   │   ├── binder
│   │   │   ├── media
│   │   │   ├── opengles
│   │   │   ├── surfaceflinger
│   │   │   ├── ui
│   │   │   └── utils
│   │   ├── surfaceflinger
│   │   │   ├── ISurfaceComposer.h
│   │   │   ├── ISurfaceFlingerClient.h
│   │   │   ├── ISurface.h
│   │   │   ├── SurfaceComposerClient.h
│   │   │   └── Surface.h
│   │   ├── tts
│   │   │   └── TtsEngine.h
│   │   ├── ui
│   │   │   ├── android_native_buffer.h
│   │   │   ├── DisplayInfo.h
│   │   │   ├── egl
│   │   │   ├── EGLNativeSurface.h
│   │   │   ├── EGLUtils.h
│   │   │   ├── EventHub.h
│   │   │   ├── FramebufferNativeWindow.h
│   │   │   ├── GraphicBufferAllocator.h
│   │   │   ├── GraphicBuffer.h
│   │   │   ├── GraphicBufferMapper.h
│   │   │   ├── IOverlay.h
│   │   │   ├── KeyCharacterMap.h
│   │   │   ├── KeycodeLabels.h
│   │   │   ├── Overlay.h
│   │   │   ├── PixelFormat.h
│   │   │   ├── Point.h
│   │   │   ├── Rect.h
│   │   │   └── Region.h
│   │   └── utils
│   │       ├── ashmem.h
│   │       ├── AssetDir.h
│   │       ├── Asset.h
│   │       ├── AssetManager.h
│   │       ├── Atomic.h
│   │       ├── BackupHelpers.h
│   │       ├── BufferedTextOutput.h
│   │       ├── Buffer.h
│   │       ├── ByteOrder.h
│   │       ├── CallStack.h
│   │       ├── Debug.h
│   │       ├── Endian.h
│   │       ├── Errors.h
│   │       ├── FileMap.h
│   │       ├── Flattenable.h
│   │       ├── KeyedVector.h
│   │       ├── List.h
│   │       ├── Log.h
│   │       ├── misc.h
│   │       ├── RefBase.h
│   │       ├── ResourceTypes.h
│   │       ├── SharedBuffer.h
│   │       ├── Singleton.h
│   │       ├── SortedVector.h
│   │       ├── StopWatch.h
│   │       ├── String16.h
│   │       ├── String8.h
│   │       ├── StringArray.h
│   │       ├── SystemClock.h
│   │       ├── TextOutput.h
│   │       ├── threads.h
│   │       ├── Timers.h
│   │       ├── TypeHelpers.h
│   │       ├── Vector.h
│   │       ├── VectorImpl.h
│   │       ├── ZipFileCRO.h
│   │       ├── ZipFileRO.h
│   │       └── ZipUtils.h
│   ├── keystore
│   │   ├── java
│   │   │   └── android
│   │   ├── MODULE_LICENSE_APACHE2
│   │   ├── NOTICE
│   │   └── tests
│   │       ├── AndroidManifest.xml
│   │       ├── Android.mk
│   │       └── src
│   ├── libs
│   │   ├── audioflinger
│   │   │   ├── A2dpAudioInterface.cpp
│   │   │   ├── A2dpAudioInterface.h
│   │   │   ├── Android.mk
│   │   │   ├── AudioBufferProvider.h
│   │   │   ├── AudioDumpInterface.cpp
│   │   │   ├── AudioDumpInterface.h
│   │   │   ├── AudioFlinger.cpp
│   │   │   ├── AudioFlinger.h
│   │   │   ├── AudioHardwareGeneric.cpp
│   │   │   ├── AudioHardwareGeneric.h
│   │   │   ├── AudioHardwareInterface.cpp
│   │   │   ├── AudioHardwareStub.cpp
│   │   │   ├── AudioHardwareStub.h
│   │   │   ├── AudioMixer.cpp
│   │   │   ├── AudioMixer.h
│   │   │   ├── AudioPolicyManagerBase.cpp
│   │   │   ├── AudioPolicyService.cpp
│   │   │   ├── AudioPolicyService.h
│   │   │   ├── AudioResampler.cpp
│   │   │   ├── AudioResamplerCubic.cpp
│   │   │   ├── AudioResamplerCubic.h
│   │   │   ├── AudioResampler.h
│   │   │   ├── AudioResamplerSinc.cpp
│   │   │   └── AudioResamplerSinc.h
│   │   ├── binder
│   │   │   ├── Android.mk
│   │   │   ├── Binder.cpp
│   │   │   ├── BpBinder.cpp
│   │   │   ├── IInterface.cpp
│   │   │   ├── IMemory.cpp
│   │   │   ├── IPCThreadState.cpp
│   │   │   ├── IPermissionController.cpp
│   │   │   ├── IServiceManager.cpp
│   │   │   ├── MemoryBase.cpp
│   │   │   ├── MemoryDealer.cpp
│   │   │   ├── MemoryHeapBase.cpp
│   │   │   ├── MemoryHeapPmem.cpp
│   │   │   ├── Parcel.cpp
│   │   │   ├── Permission.cpp
│   │   │   ├── ProcessState.cpp
│   │   │   └── Static.cpp
│   │   ├── camera
│   │   │   ├── Android.mk
│   │   │   ├── Camera.cpp
│   │   │   ├── CameraParameters.cpp
│   │   │   ├── ICameraClient.cpp
│   │   │   ├── ICamera.cpp
│   │   │   └── ICameraService.cpp
│   │   ├── rs
│   │   │   ├── Android.mk
│   │   │   ├── java
│   │   │   ├── RenderScriptEnv.h
│   │   │   ├── RenderScript.h
│   │   │   ├── rsAdapter.cpp
│   │   │   ├── rsAdapter.h
│   │   │   ├── rsAllocation.cpp
│   │   │   ├── rsAllocation.h
│   │   │   ├── rsComponent.cpp
│   │   │   ├── rsComponent.h
│   │   │   ├── rsContext.cpp
│   │   │   ├── rsContext.h
│   │   │   ├── rsDevice.cpp
│   │   │   ├── rsDevice.h
│   │   │   ├── rsElement.cpp
│   │   │   ├── rsElement.h
│   │   │   ├── rsFileA3D.cpp
│   │   │   ├── rsFileA3DDecls.h
│   │   │   ├── rsFileA3D.h
│   │   │   ├── rsgApi.cpp.rsg
│   │   │   ├── rsgApiFuncDecl.h.rsg
│   │   │   ├── rsgApiReplay.cpp.rsg
│   │   │   ├── rsgApiStructs.h.rsg
│   │   │   ├── rsg_generator.c
│   │   │   ├── rsg_ScriptJavaClass.cpp
│   │   │   ├── rsHandcode.h
│   │   │   ├── rsLight.cpp
│   │   │   ├── rsLight.h
│   │   │   ├── rsLocklessFifo.cpp
│   │   │   ├── rsLocklessFifo.h
│   │   │   ├── rsMatrix.cpp
│   │   │   ├── rsMatrix.h
│   │   │   ├── rsMesh.cpp
│   │   │   ├── rsMesh.h
│   │   │   ├── rsNoise.cpp
│   │   │   ├── rsNoise.h
│   │   │   ├── rsObjectBase.cpp
│   │   │   ├── rsObjectBase.h
│   │   │   ├── rsProgram.cpp
│   │   │   ├── rsProgramFragment.cpp
│   │   │   ├── rsProgramFragment.h
│   │   │   ├── rsProgramFragmentStore.cpp
│   │   │   ├── rsProgramFragmentStore.h
│   │   │   ├── rsProgram.h
│   │   │   ├── rsProgramRaster.cpp
│   │   │   ├── rsProgramRaster.h
│   │   │   ├── rsProgramVertex.cpp
│   │   │   ├── rsProgramVertex.h
│   │   │   ├── rsSampler.cpp
│   │   │   ├── rsSampler.h
│   │   │   ├── rsScriptC.cpp
│   │   │   ├── rsScriptC.h
│   │   │   ├── rsScriptC_Lib.cpp
│   │   │   ├── rsScript.cpp
│   │   │   ├── rsScript.h
│   │   │   ├── rsShaderCache.cpp
│   │   │   ├── rsShaderCache.h
│   │   │   ├── rsSimpleMesh.cpp
│   │   │   ├── rsSimpleMesh.h
│   │   │   ├── rs.spec
│   │   │   ├── rsThreadIO.cpp
│   │   │   ├── rsThreadIO.h
│   │   │   ├── rsType.cpp
│   │   │   ├── rsType.h
│   │   │   ├── rsUtils.h
│   │   │   ├── rsVertexArray.cpp
│   │   │   ├── rsVertexArray.h
│   │   │   ├── scriptc
│   │   │   ├── spec.h
│   │   │   └── spec.l
│   │   ├── surfaceflinger
│   │   │   ├── Android.mk
│   │   │   ├── Barrier.h
│   │   │   ├── BlurFilter.cpp
│   │   │   ├── BlurFilter.h
│   │   │   ├── clz.cpp
│   │   │   ├── clz.h
│   │   │   ├── DisplayHardware
│   │   │   ├── LayerBase.cpp
│   │   │   ├── LayerBase.h
│   │   │   ├── LayerBlur.cpp
│   │   │   ├── LayerBlur.h
│   │   │   ├── LayerBuffer.cpp
│   │   │   ├── LayerBuffer.h
│   │   │   ├── Layer.cpp
│   │   │   ├── LayerDim.cpp
│   │   │   ├── LayerDim.h
│   │   │   ├── Layer.h
│   │   │   ├── MessageQueue.cpp
│   │   │   ├── MessageQueue.h
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── SurfaceFlinger.cpp
│   │   │   ├── SurfaceFlinger.h
│   │   │   ├── tests
│   │   │   ├── Tokenizer.cpp
│   │   │   ├── Tokenizer.h
│   │   │   ├── Transform.cpp
│   │   │   └── Transform.h
│   │   ├── surfaceflinger_client
│   │   │   ├── Android.mk
│   │   │   ├── ISurfaceComposer.cpp
│   │   │   ├── ISurface.cpp
│   │   │   ├── ISurfaceFlingerClient.cpp
│   │   │   ├── LayerState.cpp
│   │   │   ├── SharedBufferStack.cpp
│   │   │   ├── SurfaceComposerClient.cpp
│   │   │   └── Surface.cpp
│   │   ├── ui
│   │   │   ├── Android.mk
│   │   │   ├── EGLUtils.cpp
│   │   │   ├── EventHub.cpp
│   │   │   ├── EventRecurrence.cpp
│   │   │   ├── FramebufferNativeWindow.cpp
│   │   │   ├── GraphicBufferAllocator.cpp
│   │   │   ├── GraphicBuffer.cpp
│   │   │   ├── GraphicBufferMapper.cpp
│   │   │   ├── IOverlay.cpp
│   │   │   ├── KeyCharacterMap.cpp
│   │   │   ├── KeyLayoutMap.cpp
│   │   │   ├── KeyLayoutMap.h
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   ├── Overlay.cpp
│   │   │   ├── PixelFormat.cpp
│   │   │   ├── Rect.cpp
│   │   │   ├── Region.cpp
│   │   │   └── tests
│   │   └── utils
│   │       ├── Android.mk
│   │       ├── Asset.cpp
│   │       ├── AssetDir.cpp
│   │       ├── AssetManager.cpp
│   │       ├── BackupData.cpp
│   │       ├── BackupHelpers.cpp
│   │       ├── BufferedTextOutput.cpp
│   │       ├── CallStack.cpp
│   │       ├── Debug.cpp
│   │       ├── FileMap.cpp
│   │       ├── Flattenable.cpp
│   │       ├── misc.cpp
│   │       ├── MODULE_LICENSE_APACHE2
│   │       ├── NOTICE
│   │       ├── README
│   │       ├── RefBase.cpp
│   │       ├── ResourceTypes.cpp
│   │       ├── SharedBuffer.cpp
│   │       ├── Static.cpp
│   │       ├── StopWatch.cpp
│   │       ├── String16.cpp
│   │       ├── String8.cpp
│   │       ├── StringArray.cpp
│   │       ├── SystemClock.cpp
│   │       ├── TextOutput.cpp
│   │       ├── Threads.cpp
│   │       ├── Timers.cpp
│   │       ├── VectorImpl.cpp
│   │       ├── ZipFileCRO.cpp
│   │       ├── ZipFileRO.cpp
│   │       └── ZipUtils.cpp
│   ├── location
│   │   ├── java
│   │   │   ├── android
│   │   │   └── com
│   │   └── tests
│   │       └── locationtests
│   ├── media
│   │   ├── java
│   │   │   └── android
│   │   ├── jni
│   │   │   ├── android_media_AmrInputStream.cpp
│   │   │   ├── android_media_MediaMetadataRetriever.cpp
│   │   │   ├── android_media_MediaPlayer.cpp
│   │   │   ├── android_media_MediaProfiles.cpp
│   │   │   ├── android_media_MediaRecorder.cpp
│   │   │   ├── android_media_MediaScanner.cpp
│   │   │   ├── android_media_ResampleInputStream.cpp
│   │   │   ├── android_media_subtitle.cpp
│   │   │   ├── Android.mk
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── soundpool
│   │   ├── libdrm
│   │   │   ├── Android.mk
│   │   │   ├── mobile1
│   │   │   ├── mobile2
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   └── NOTICE
│   │   ├── libmedia
│   │   │   ├── Android.mk
│   │   │   ├── AudioRecord.cpp
│   │   │   ├── AudioSystem.cpp
│   │   │   ├── AudioTrack.cpp
│   │   │   ├── autodetect.cpp
│   │   │   ├── autodetect.h
│   │   │   ├── IAudioFlingerClient.cpp
│   │   │   ├── IAudioFlinger.cpp
│   │   │   ├── IAudioPolicyService.cpp
│   │   │   ├── IAudioRecord.cpp
│   │   │   ├── IAudioTrack.cpp
│   │   │   ├── IMediaDeathNotifier.cpp
│   │   │   ├── IMediaMetadataRetriever.cpp
│   │   │   ├── IMediaPlayerClient.cpp
│   │   │   ├── IMediaPlayer.cpp
│   │   │   ├── IMediaPlayerService.cpp
│   │   │   ├── IMediaRecorder.cpp
│   │   │   ├── IOMX.cpp
│   │   │   ├── JetPlayer.cpp
│   │   │   ├── mediametadataretriever.cpp
│   │   │   ├── mediaplayer.cpp
│   │   │   ├── MediaProfiles.cpp
│   │   │   ├── mediarecorder.cpp
│   │   │   ├── MediaScannerClient.cpp
│   │   │   ├── MediaScanner.cpp
│   │   │   ├── Metadata.cpp
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   └── ToneGenerator.cpp
│   │   ├── libmediaplayerservice
│   │   │   ├── Android.mk
│   │   │   ├── MediaPlayerService.cpp
│   │   │   ├── MediaPlayerService.h
│   │   │   ├── MediaRecorderClient.cpp
│   │   │   ├── MediaRecorderClient.h
│   │   │   ├── MetadataRetrieverClient.cpp
│   │   │   ├── MetadataRetrieverClient.h
│   │   │   ├── MidiFile.cpp
│   │   │   ├── MidiFile.h
│   │   │   ├── MidiMetadataRetriever.cpp
│   │   │   ├── MidiMetadataRetriever.h
│   │   │   ├── StagefrightPlayer.cpp
│   │   │   ├── StagefrightPlayer.h
│   │   │   ├── StagefrightRecorder.cpp
│   │   │   ├── StagefrightRecorder.h
│   │   │   ├── TestPlayerStub.cpp
│   │   │   ├── TestPlayerStub.h
│   │   │   ├── VorbisMetadataRetriever.cpp
│   │   │   ├── VorbisMetadataRetriever.h
│   │   │   ├── VorbisPlayer.cpp
│   │   │   └── VorbisPlayer.h
│   │   ├── libstagefright
│   │   │   ├── AMRExtractor.cpp
│   │   │   ├── AMRWriter.cpp
│   │   │   ├── Android.mk
│   │   │   ├── AudioPlayer.cpp
│   │   │   ├── AudioSource.cpp
│   │   │   ├── avc_utils.cpp
│   │   │   ├── AwesomePlayer.cpp
│   │   │   ├── CachingDataSource.cpp
│   │   │   ├── CameraSource.cpp
│   │   │   ├── codecs
│   │   │   ├── colorconversion
│   │   │   ├── DataSource.cpp
│   │   │   ├── ESDS.cpp
│   │   │   ├── FileSource.cpp
│   │   │   ├── foundation
│   │   │   ├── HTTPDataSource.cpp
│   │   │   ├── HTTPStream.cpp
│   │   │   ├── id3
│   │   │   ├── include
│   │   │   ├── JPEGSource.cpp
│   │   │   ├── matroska
│   │   │   ├── MediaBuffer.cpp
│   │   │   ├── MediaBufferGroup.cpp
│   │   │   ├── MediaDefs.cpp
│   │   │   ├── MediaExtractor.cpp
│   │   │   ├── MediaSource.cpp
│   │   │   ├── MetaData.cpp
│   │   │   ├── MP3Extractor.cpp
│   │   │   ├── MPEG4Extractor.cpp
│   │   │   ├── MPEG4Writer.cpp
│   │   │   ├── OggExtractor.cpp
│   │   │   ├── omx
│   │   │   ├── OMXClient.cpp
│   │   │   ├── OMXCodec.cpp
│   │   │   ├── Prefetcher.cpp
│   │   │   ├── rtsp
│   │   │   ├── SampleIterator.cpp
│   │   │   ├── SampleTable.cpp
│   │   │   ├── ShoutcastSource.cpp
│   │   │   ├── StagefrightMediaScanner.cpp
│   │   │   ├── StagefrightMetadataRetriever.cpp
│   │   │   ├── string.cpp
│   │   │   ├── TimedEventQueue.cpp
│   │   │   ├── TimeSource.cpp
│   │   │   ├── Utils.cpp
│   │   │   └── WAVExtractor.cpp
│   │   ├── libsubtitle
│   │   │   ├── Android.mk
│   │   │   ├── include
│   │   │   └── src
│   │   ├── mediaserver
│   │   │   ├── Android.mk
│   │   │   └── main_mediaserver.cpp
│   │   └── tests
│   │       ├── MediaFrameworkTest
│   │       ├── omxjpegdecoder
│   │       ├── players
│   │       ├── SoundPoolTest
│   │       └── subtitleplayer
│   ├── MODULE_LICENSE_APACHE2
│   ├── native
│   │   ├── graphics
│   │   │   └── jni
│   │   └── include
│   │       └── android
│   ├── NOTICE
│   ├── obex
│   │   ├── Android.mk
│   │   └── javax
│   │       └── obex
│   ├── opengl
│   │   ├── include
│   │   │   ├── EGL
│   │   │   ├── ETC1
│   │   │   ├── GLES
│   │   │   ├── GLES2
│   │   │   └── KHR
│   │   ├── java
│   │   │   ├── android
│   │   │   ├── com
│   │   │   └── javax
│   │   ├── libagl
│   │   │   ├── Android.mk
│   │   │   ├── array.cpp
│   │   │   ├── array.h
│   │   │   ├── BufferObjectManager.cpp
│   │   │   ├── BufferObjectManager.h
│   │   │   ├── context.h
│   │   │   ├── copybit.cpp
│   │   │   ├── copybit.h
│   │   │   ├── dxt.cpp
│   │   │   ├── dxt.h
│   │   │   ├── egl.cpp
│   │   │   ├── fixed_asm.S
│   │   │   ├── fp.cpp
│   │   │   ├── fp.h
│   │   │   ├── iterators.S
│   │   │   ├── light.cpp
│   │   │   ├── light.h
│   │   │   ├── matrix.cpp
│   │   │   ├── matrix.h
│   │   │   ├── mipmap.cpp
│   │   │   ├── primitives.cpp
│   │   │   ├── primitives.h
│   │   │   ├── state.cpp
│   │   │   ├── state.h
│   │   │   ├── texture.cpp
│   │   │   ├── texture.h
│   │   │   ├── TextureObjectManager.cpp
│   │   │   ├── TextureObjectManager.h
│   │   │   ├── Tokenizer.cpp
│   │   │   ├── Tokenizer.h
│   │   │   ├── TokenManager.cpp
│   │   │   ├── TokenManager.h
│   │   │   ├── vertex.cpp
│   │   │   └── vertex.h
│   │   ├── libs
│   │   │   ├── Android.mk
│   │   │   ├── EGL
│   │   │   ├── egl_impl.h
│   │   │   ├── entries.in
│   │   │   ├── ETC1
│   │   │   ├── GLES2
│   │   │   ├── GLES_CM
│   │   │   ├── hooks.h
│   │   │   └── tools
│   │   ├── tests
│   │   │   ├── Android.mk
│   │   │   ├── angeles
│   │   │   ├── fillrate
│   │   │   ├── filter
│   │   │   ├── finish
│   │   │   ├── gl2_basic
│   │   │   ├── gl2_java
│   │   │   ├── gl2_jni
│   │   │   ├── gl_basic
│   │   │   ├── gldual
│   │   │   ├── gl_jni
│   │   │   ├── gralloc
│   │   │   ├── lighting1709
│   │   │   ├── linetex
│   │   │   ├── swapinterval
│   │   │   ├── testPauseResume
│   │   │   ├── textures
│   │   │   └── tritex
│   │   └── tools
│   │       └── glgen
│   ├── packages
│   │   ├── DefaultContainerService
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── res
│   │   │   └── src
│   │   ├── SettingsProvider
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   ├── res
│   │   │   └── src
│   │   ├── TtsService
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── jni
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   ├── proguard.flags
│   │   │   ├── res
│   │   │   └── src
│   │   └── VpnServices
│   │       ├── AndroidManifest.xml
│   │       ├── Android.mk
│   │       ├── MODULE_LICENSE_APACHE2
│   │       ├── NOTICE
│   │       ├── res
│   │       └── src
│   ├── preloaded-classes
│   ├── sax
│   │   ├── java
│   │   │   └── android
│   │   └── tests
│   │       └── saxtests
│   ├── services
│   │   ├── java
│   │   │   ├── Android.mk
│   │   │   └── com
│   │   ├── jni
│   │   │   ├── Android.mk
│   │   │   ├── com_android_server_AlarmManagerService.cpp
│   │   │   ├── com_android_server_BatteryService.cpp
│   │   │   ├── com_android_server_KeyInputQueue.cpp
│   │   │   ├── com_android_server_LightsService.cpp
│   │   │   ├── com_android_server_SensorService.cpp
│   │   │   ├── com_android_server_SystemServer.cpp
│   │   │   ├── com_android_server_VibratorService.cpp
│   │   │   └── onload.cpp
│   │   └── tests
│   │       └── servicestests
│   ├── telephony
│   │   ├── java
│   │   │   ├── android
│   │   │   └── com
│   │   └── tests
│   │       └── telephonytests
│   ├── test-runner
│   │   ├── Android.mk
│   │   ├── src
│   │   │   ├── android
│   │   │   └── junit
│   │   └── tests
│   │       ├── AndroidManifest.xml
│   │       ├── Android.mk
│   │       └── src
│   ├── tests
│   │   ├── appwidgets
│   │   │   ├── AppWidgetHostTest
│   │   │   └── AppWidgetProviderTest
│   │   ├── backup
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── backup_helper_test.cpp
│   │   │   ├── backup_stress_test.sh
│   │   │   ├── src
│   │   │   ├── test_backup_common.sh
│   │   │   ├── test_backup.sh
│   │   │   └── test_restore.sh
│   │   ├── BatteryWaster
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── res
│   │   │   └── src
│   │   ├── BrowserPowerTest
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   └── src
│   │   ├── BrowserTestPlugin
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── jni
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── NOTICE
│   │   │   ├── res
│   │   │   └── src
│   │   ├── CoreTests
│   │   │   ├── android
│   │   │   ├── Android.mk
│   │   │   ├── MODULE_LICENSE_APACHE2
│   │   │   ├── run_core_test.sh
│   │   │   └── run_junit.sh
│   │   ├── DpiTest
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── res
│   │   │   └── src
│   │   ├── DumpRenderTree
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── assets
│   │   │   └── src
│   │   ├── framework-tests
│   │   │   ├── Android.mk
│   │   │   ├── README
│   │   │   └── src
│   │   ├── ImfTest
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── res
│   │   │   ├── src
│   │   │   └── tests
│   │   ├── LocationTracker
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── res
│   │   │   └── src
│   │   ├── LotsOfApps
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── res
│   │   │   └── src
│   │   ├── LowStorageTest
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── res
│   │   │   └── src
│   │   ├── permission
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   └── src
│   │   ├── SmokeTest
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── README
│   │   │   ├── src
│   │   │   └── tests
│   │   ├── SslLoad
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   └── src
│   │   ├── StatusBar
│   │   │   ├── AndroidManifest.xml
│   │   │   ├── Android.mk
│   │   │   ├── res
│   │   │   └── src
│   │   └── TransformTest
│   │       ├── AndroidManifest.xml
│   │       ├── Android.mk
│   │       ├── res
│   │       └── src
│   ├── tools
│   │   ├── aapt
│   │   │   ├── AaptAssets.cpp
│   │   │   ├── AaptAssets.h
│   │   │   ├── Android.mk
│   │   │   ├── Bundle.h
│   │   │   ├── Command.cpp
│   │   │   ├── Images.cpp
│   │   │   ├── Images.h
│   │   │   ├── Main.cpp
│   │   │   ├── Main.h
│   │   │   ├── Package.cpp
│   │   │   ├── printapk.cpp
│   │   │   ├── Resource.cpp
│   │   │   ├── ResourceTable.cpp
│   │   │   ├── ResourceTable.h
│   │   │   ├── SourcePos.cpp
│   │   │   ├── SourcePos.h
│   │   │   ├── StringPool.cpp
│   │   │   ├── StringPool.h
│   │   │   ├── tests
│   │   │   ├── XMLNode.cpp
│   │   │   ├── XMLNode.h
│   │   │   ├── ZipEntry.cpp
│   │   │   ├── ZipEntry.h
│   │   │   ├── ZipFile.cpp
│   │   │   └── ZipFile.h
│   │   ├── aidl
│   │   │   ├── aidl.cpp
│   │   │   ├── aidl_language.cpp
│   │   │   ├── aidl_language.h
│   │   │   ├── aidl_language_l.l
│   │   │   ├── aidl_language_y.y
│   │   │   ├── Android.mk
│   │   │   ├── AST.cpp
│   │   │   ├── AST.h
│   │   │   ├── generate_java.cpp
│   │   │   ├── generate_java.h
│   │   │   ├── options.cpp
│   │   │   ├── options.h
│   │   │   ├── options_test.cpp
│   │   │   ├── search_path.cpp
│   │   │   ├── search_path.h
│   │   │   ├── Type.cpp
│   │   │   └── Type.h
│   │   ├── layoutlib
│   │   │   ├── Android.mk
│   │   │   ├── bridge
│   │   │   └── create
│   │   ├── localize
│   │   │   ├── Android.mk
│   │   │   ├── Configuration.cpp
│   │   │   ├── Configuration.h
│   │   │   ├── file_utils.cpp
│   │   │   ├── file_utils.h
│   │   │   ├── localize.cpp
│   │   │   ├── localize.h
│   │   │   ├── localize_test.cpp
│   │   │   ├── log.h
│   │   │   ├── merge_res_and_xliff.cpp
│   │   │   ├── merge_res_and_xliff.h
│   │   │   ├── merge_res_and_xliff_test.cpp
│   │   │   ├── Perforce.cpp
│   │   │   ├── Perforce.h
│   │   │   ├── Perforce_test.cpp
│   │   │   ├── res_check.cpp
│   │   │   ├── res_check.h
│   │   │   ├── SourcePos.cpp
│   │   │   ├── SourcePos.h
│   │   │   ├── test.cpp
│   │   │   ├── testdata
│   │   │   ├── Values.cpp
│   │   │   ├── ValuesFile.cpp
│   │   │   ├── ValuesFile.h
│   │   │   ├── ValuesFile_test.cpp
│   │   │   ├── Values.h
│   │   │   ├── XLIFFFile.cpp
│   │   │   ├── XLIFFFile.h
│   │   │   ├── XLIFFFile_test.cpp
│   │   │   ├── xmb.cpp
│   │   │   ├── xmb.h
│   │   │   ├── XMLHandler.cpp
│   │   │   ├── XMLHandler.h
│   │   │   ├── XMLHandler_test.cpp
│   │   │   └── XMLNode.h
│   │   ├── makekeycodes
│   │   │   ├── Android.mk
│   │   │   └── makekeycodes.cpp
│   │   └── preload
│   │       ├── 20080522.compiled
│   │       ├── 20090811.compiled
│   │       ├── 20100223.compiled
│   │       ├── Android.mk
│   │       ├── Compile.java
│   │       ├── loadclass
│   │       ├── LoadedClass.java
│   │       ├── MemoryUsage.java
│   │       ├── Operation.java
│   │       ├── Policy.java
│   │       ├── preload.iml
│   │       ├── preload.ipr
│   │       ├── PrintCsv.java
│   │       ├── PrintHtmlDiff.java
│   │       ├── PrintPsTree.java
│   │       ├── Proc.java
│   │       ├── Record.java
│   │       ├── Root.java
│   │       ├── sorttable.js
│   │       └── WritePreloadedClassFile.java
│   ├── vpn
│   │   ├── java
│   │   │   └── android
│   │   └── tests
│   │       └── vpntests
│   └── wifi
│       └── java
│           └── android
├── ex
│   └── common
│       ├── Android.mk
│       ├── java
│       │   └── com
│       ├── tests
│       │   ├── AndroidManifest.xml
│       │   ├── Android.mk
│       │   └── src
│       └── tools
│           └── make-iana-tld-pattern.py
├── opt
│   └── emoji
│       ├── Android.mk
│       ├── CleanSpec.mk
│       ├── EmojiFactory.cpp
│       └── EmojiFactory.h
└── policies
    └── base
        ├── CleanSpec.mk
        ├── mid
        │   ├── Android.mk
        │   └── com
        ├── phone
        │   ├── Android.mk
        │   └── com
        └── PolicyConfig.mk

框架目录结构: 分三类,base, ex, opt,policiece

frameworks/
├── base
│   ├── Android.mk
│   ├── api
│   ├── awt
│   ├── build
│   ├── camera
│   ├── CleanSpec.mk
│   ├── cmds
│   ├── core
│   ├── data
│   ├── docs
│   ├── ethernet
│   ├── graphics
│   ├── include
│   ├── keystore
│   ├── libs
│   ├── location
│   ├── media
│   ├── MODULE_LICENSE_APACHE2
│   ├── native
│   ├── NOTICE
│   ├── obex
│   ├── opengl
│   ├── packages
│   ├── preloaded-classes
│   ├── sax
│   ├── services
│   ├── telephony
│   ├── test-runner
│   ├── tests
│   ├── tools
│   ├── vpn
│   └── wifi
├── ex
│   └── common
├── opt
│   └── emoji
└── policiece
    └── base






三层目录:
frameworks/
├── base
│   ├── Android.mk
│   ├── api
│   │   ├── 1.xml
│   │   ├── 2.xml
│   │   ├── 3.xml
│   │   ├── 4.xml
│   │   ├── 5.xml
│   │   ├── 6.xml
│   │   ├── 7.xml
│   │   ├── 8.xml
│   │   └── current.xml
│   ├── awt
│   │   ├── Android.mk
│   │   ├── com
│   │   ├── java
│   │   ├── javax
│   │   ├── org
│   │   └── resources
│   ├── build
│   │   └── jarjar-rules.txt
│   ├── camera          : 关于camera的HAL接口库。最终生成native共享库libcamera.so ,编译时根据是否定义USE_CAMERA_STUB来决定系统是否有Camera硬件支持。若没有实际的Camera硬件,
│   │   ├── libcameraservice   :则编译时会和虚拟camera静态库(libcamerastub.a,由camerahardwarestub.cpp,fakecamera生成)链接生成libcamera.so。
│   │   └── tests
│   ├── CleanSpec.mk
│   ├── cmds        :android系统启动时用到的commands
│   │   ├── am
│   │   ├── app_process   :可执行文件app_process,该文件可以根据输入参数决定是Zygote启动(参考init.rc中的语句 service zygote /system/bin/app_process -Xzygote / system/  bin --zygote --start-system-server). 
│   │   ├── backup
│   │   ├── bmgr :        :  java可执行程式, backup manager, java库形式分发到目标系统/system/framework/bmgr.jar 
│   │   ├── bootanimation : android启动动画效果程式,该程式必须在android runtime启动后运行。
│   │   ├── bugreport
│   │   ├── dumpstate     : ndroid系统调试辅助工具,生成可执行程式dumpstate,同时建立两个程式dumpcrash bugreport指向该程式。
│   │   ├── dumpsys       : 生成可执行程式dumpsys 
│   │   ├── ime           : java可执行程式 ,IME输入法 input method manager, java库形式分发到目标系统/system/framework/ime.jar 
│   │   ├── input         : java可执行程式,管理input事件例如key event,text event 等,java库形式分发到目标系统/system/framework/input.jar 
│   │   ├── installd      : 可执行程式installd,install manager,仅在非simulator系统中运行,安装到目标系统/system/bin/installd 
│   │   ├── keystore
│   │   ├── pm
│   │   ├── rawbu
│   │   ├── runtime       : runtime可执行程式,仅在simulator中使用
│   │   ├── service       : service可执行程式,用来查找,检查,呼叫service,安装到目标系统/system/bin/service 
│   │   ├── servicemanager : android系统的service manager,可执行文件,安装到目标系统/system/bin/servicemanager,servicemanager会和kernel的binder driver协作共同完成service的添加、查询、获取、检查等。
│   │   ├── stagefright
│   │   ├── surfaceflinger :surfaceflinger可执行程式,安装到目标系统/system/bin/surfaceflinger,该程式会初始化surfaceflinger,surfaceflinger::inistantiate(),该程式会链接到libsurfaceflinger.so 
│   │   ├── svc
│   │   └── system_server
│   ├── core
│   │   ├── config
│   │   ├── java      : framework的核心,此处主要指application framework,java库形式分发到/system/framework/ 
│   │   ├── jni       :framework所需的JNI接口实现库,分发到/system/lib/lib/libandroid_runtime.so 
│   │   ├── res       : framework所需的资源文件打包,/system/framework/framework-res.apk。
│   │   └── tests
│   ├── data
│   │   ├── etc
│   │   ├── fonts
│   │   └── sounds
│   ├── docs
│   │   ├── docs-documentation-redirect.html
│   │   ├── docs-redirect.html
│   │   ├── docs-redirect-index.html
│   │   ├── docs-samples-redirect.html
│   │   ├── html
│   │   └── overview-ext.html
│   ├── ethernet
│   │   └── java
│   ├── graphics
│   │   ├── java
│   │   ├── jni
│   │   └── tests
│   ├── include
│   │   ├── android_runtime
│   │   ├── binder
│   │   ├── camera
│   │   ├── media
│   │   ├── pim
│   │   ├── private
│   │   ├── surfaceflinger
│   │   ├── tts
│   │   ├── ui
│   │   └── utils
│   ├── keystore
│   │   ├── java
│   │   ├── MODULE_LICENSE_APACHE2
│   │   ├── NOTICE
│   │   └── tests
│   ├── libs
│   │   ├── audioflinger : 生成libaudioflinger.so,若无实际硬件和静态库libaudiointerface.a(audio interface虚拟设备)链接。若有实际硬件和libaudio.so链接,若支持bluetooth,则和liba2dp.so链接
│   │   ├── binder
│   │   ├── camera
│   │   ├── rs
│   │   ├── surfaceflinger : 生成libsurfaceflinger.so 
│   │   ├── surfaceflinger_client
│   │   ├── ui   : 生成libui.so
│   │   └── utils  : 生成libutils.so 
│   ├── location
│   │   ├── java
│   │   └── tests
│   ├── media
│   │   ├── java
│   │   ├── jni
│   │   ├── libdrm
│   │   ├── libmedia
│   │   ├── libmediaplayerservice
│   │   ├── libstagefright
│   │   ├── libsubtitle
│   │   ├── mediaserver
│   │   └── tests
│   ├── MODULE_LICENSE_APACHE2
│   ├── native
│   │   ├── graphics
│   │   └── include
│   ├── NOTICE
│   ├── obex
│   │   ├── Android.mk
│   │   └── javax
│   ├── opengl
│   │   ├── include
│   │   ├── java
│   │   ├── libagl
│   │   ├── libs
│   │   ├── tests
│   │   └── tools
│   ├── packages
│   │   ├── DefaultContainerService
│   │   ├── SettingsProvider
│   │   ├── TtsService
│   │   └── VpnServices
│   ├── preloaded-classes
│   ├── sax
│   │   ├── java
│   │   └── tests
│   ├── services  
│   │   ├── java : system server java可执行程式service.jar,分发到/system/framework/service.jar 
│   │   ├── jni   : ystem server JNI接口实现库,libanroid_servers.so,分发到/system/lib/libanroid_servers.so
│   │   └── tests
│   ├── telephony
│   │   ├── java
│   │   └── tests
│   ├── test-runner
│   │   ├── Android.mk
│   │   ├── src
│   │   └── tests
│   ├── tests
│   │   ├── appwidgets
│   │   ├── backup
│   │   ├── BatteryWaster
│   │   ├── BrowserPowerTest
│   │   ├── BrowserTestPlugin
│   │   ├── CoreTests
│   │   ├── DpiTest
│   │   ├── DumpRenderTree
│   │   ├── framework-tests
│   │   ├── ImfTest
│   │   ├── LocationTracker
│   │   ├── LotsOfApps
│   │   ├── LowStorageTest
│   │   ├── permission
│   │   ├── SmokeTest
│   │   ├── SslLoad
│   │   ├── StatusBar
│   │   └── TransformTest
│   ├── tools
│   │   ├── aapt
│   │   ├── aidl
│   │   ├── layoutlib
│   │   ├── localize
│   │   ├── makekeycodes
│   │   └── preload
│   ├── vpn
│   │   ├── java
│   │   └── tests
│   └── wifi
│       └── java
├── ex
│   └── common
│       ├── Android.mk
│       ├── java
│       ├── tests
│       └── tools
├── opt
│   └── emoji
│       ├── Android.mk
│       ├── CleanSpec.mk
│       ├── EmojiFactory.cpp
│       └── EmojiFactory.h
└── policies
    └── base
        ├── CleanSpec.mk
        ├── mid
        ├── phone
        └── PolicyConfig.mk

启动 Zygote


-Xzygote /system/bin --zygote --start-system-server


AndroidRuntime->AppRuntime

int main(int argc,const char* const argv[])
{
  AppRuntime runtime;生成AndroidRuntime实例
  ...
  AndroidRuntime.Start("com.android.internal.os.ZygoteInit",startSystemServer)
}

其中 AndroidRuntime.Start("com.android.internal.os.ZygoteInit",startSystemServer);
呼叫Android::Start(const char* className,const bool startSystemServer)
/framework/base/core/jni/AndroidRuntime.cpp
该函数的处理内容:
1.处理Jave Virtual Machine的一些参数选项;
2.创建Dalvik Java虚拟机,JNI_CreateJavaVM(&mJavaVM,&env,&initArgs);
3.注册Android Runtime中的JNI接口给虚拟机;
4.呼叫Java类 com.android.internal.os.ZygoteInit的main函数
在 类 com.android.internal.os.ZygoteInit的main函数中,
1.注册Zygote socket用来接收请求;
2.加载preloaded class、resources用来加快启动速度,文件清单在framework.jar中的preloaded-classes,framework-res.apk中的res中;
3.启动System Server;
  fork出独立的进程名称为system-server,呼叫com.android.server.SystemServer类的main函数;
  在HandleSystemServerProcess函数中,RuntimeInit.ZygoteInit调用会呼叫AppRuntime的OnZygoteInit函数
4.RuntimeInit.ZygoteInit函数会呼叫 com.android.server.SystemServer类的main函数。
  在此main函数中,系统首先加载android_server共享库libandroid_server.so 源代码位于/framework/base/service/jni
  在该库中有定义JNI_OnLoad函数,所以Dalvik在加载 libandroid_server.so 的时候会首先呼叫该JNI_OnLoad函数,该函数将android server注册到Java虚拟机中,包括 KeyInputQueue,HardwareService,AlarmManager,BatteryService,SensorService,SystemServer 等;
  呼叫在libanroid_server.so中注册的native函数init1,该函数位于/frameworks/base/services/jni/com_android_server_SystemServer.cpp中;
  init1函数呼叫libsystem_server中的system_init函数,该函数位于/frameworks/base/cmds /system_server/library/system_init.cpp中,该函数将SurfaceFlinger/AudioFlinger /MediaPlayer/CameraService等组件注册到ServiceManager中
  system_init函数反过来呼叫java类com.android.server.SystemServer的init2函数;
5.在init2函数中,android创建了serverthread,在该thread中android开始注册各种service到service manager中
包括EntropyService,PowerManager,ActivityManager,Telephony,PackageManager,ContentManager,ContentProvider,
BatteryService,HardwareService,AlarmManager等等。
  注意该线程使用Looper来执行thread,至此android system server启动完成。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值