Android Framework框架分析

2019-08-29 23:15

Android framework analysis (partI zt) 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

android framework 分析(二)

启动 Zygote

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

AndroidRuntime->AppRuntime

int main(int argc,const char* const argv[]) {

AppRuntime runtime;生成AndroidRuntime实例

...

AndroidRuntime.Start(\ }

其中 AndroidRuntime.Start(\

呼叫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中;


Android Framework框架分析.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:堤防设计报告范本 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: