Android Framework 分析 (一)
1.目录树
/framework/base/api
/framework/base/awt
/framework/base/build
/framework/base/camera
关 于camera的HAL接口库。最终生成native共享库libcamera.so ,编译时根据是否定义USE_CAMERA_STUB来决定系统是否有Camera硬件支持。若没有实际的Camera硬件,则编译时会和虚拟 camera静态库(libcamerastub.a,由camerahardwarestub.cpp,fakecamera生成)链接生成 libcamera.so。
/framework/base/cmds 关于android系统启动时用到的command等
/framework/base/cmds/am
/framework/base/cmds/app_process
可 执行文件app_process,该文件可以根据输入参数决定是Zygote启动(参考init.rc中的语句 service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server).
该执行程式会链接libandroid_runtime.so去链接android runtime。后面我会在详细分析此部分。
/framework/base/cmds/backup
可执行程式btool
/framework/base/cmds/bmgr
java可执行程式, backup manager, java库形式分发到目标系统/system/framework/bmgr.jar
/framework/base/cmds/bootanimation
android启动动画效果程式,该程式必须在android runtime启动后运行。
/framework/base/cmds/dumpstate
android系统调试辅助工具,生成可执行程式dumpstate,同时建立两个程式dumpcrash bugreport指向该程式。
/framework/base/cmds/dumpsys
生成可执行程式dumpsys
/framework/base/cmds/ime
java可执行程式 ,IME输入法 input method manager, java库形式分发到目标系统/system/framework/ime.jar
/framework/base/cmds/input
java可执行程式,管理input事件例如key event,text event 等,java库形式分发到目标系统/system/framework/input.jar
/framework/base/cmds/installd
可执行程式installd,install manager,仅在非simulator系统中运行,安装到目标系统/system/bin/installd
/framework/base/cmds/keystore
可执行程式keystore ,用途???仅在非simulator系统中运行,安装到目标系统/system/bin/keystore
/framework/base/cmds/pm
java可执行程式,package manager,java库形式分发到目标系统/system/framework/pm.jar
/framework/base/cmds/runtime
runtime可执行程式,仅在simulator中使用
/framework/base/cmds/service
service可执行程式,用来查找,检查,呼叫service,安装到目标系统/system/bin/service
/framework/base/cmds/servicemanager
android系统的service manager,可执行文件,安装到目标系统/system/bin/servicemanager
servicemanager会和kernel的binder driver协作共同完成service的添加、查询、获取、检查等。
/framework/base/cmds/surfaceflinger
surfaceflinger可执行程式,安装到目标系统/system/bin/surfaceflinger,
该程式会初始化surfaceflinger,surfaceflinger::inistantiate(),该程式会链接到libsurfaceflinger.so
/framework/base/cmds/svc
/framework/base/cmds/system_server
system server库libsystem_server.so->system/lib/libsystem_server.so和system_server可执行程式->system/bin/system_server.
该可执行程式不清楚什么用途????
/framework/core/
/framework/core/config
几个简单java常量,(debug标志等)
/framework/core/java/*
framewor
k的核心,此处主要指application framework,java库形式分发到/system/framework/
包括framework.jar,framework-tests.jar sure???
/framework/core/jni
framework所需的JNI接口实现库,分发到/system/lib/lib/libandroid_runtime.so
/framework/core/res
framework所需的资源文件打包,/system/framework/framework-res.apk,
/framework/libs
/framework/libs/audioflinger,
生成libaudioflinger.so,
若无实际硬件和静态库libaudiointerface.a(audio interface虚拟设备)链接。
若有实际硬件和libaudio.so链接,若支持bluetooth,则和liba2dp.so链接
/framework/libs/surfaceflinger
生成libsurfaceflinger.so
/framework/libs/ui
生成libui.so
/framework/libs/utils
生成libutils.so
/framework/services/java/*
system server java可执行程式service.jar,分发到/system/framework/service.jar
/framework/services/jni/*
system server JNI接口实现库,libanroid_servers.so,分发到/system/lib/libanroid_servers.so