- :终端下执行am命令时所需的java库。源码目录:framework/base/cmds/am
- :锁屏界面需要用到的jar包,该包引用了,源码目录:framework/base/policy
- :测试应用所需的jar包,该包引用了,以及,源码目录:framework/base/test-runner
- :adb shell命令下对Android Device所有package备份和恢复的操作时所需的java库。官方文档:/guide/developing/tools/。不过这个android服务默认是Disabled,而且要backup的应用必须实现BackupAgent,在的application标签中加入android:backupAgent属性。源码目录:framework/base/cmds/bmgr
- : java三方的密匙库,网上资料说用来apk签名、https链接之类,官网 :/
- :用于管理USB的上层java库,在系统编译时hardware层会调用到。源码目录:frameworks/base/libs/usb
- :
- .nfc_extras.jar:NFC外部库。android/nfc/会调用到包中的。源码目录:frameworks/base/nfc-extras
- :junit核心库,在运行*时被调用。
- :未知,公司话机上有。
- core-tests*.jar:framework下的一系列测试jar包,不做测试时可删除。
- :核心库,启动桌面时首先加载这个。源码目录:
- :android外部三方扩展包,源码主要是external/nist-sip(java下的sip三方库)、external/apache-http(apache的java三方库)、external/tagsoup(符合SAX标准的HTML解析器)。其实这个jar包可以添加外部扩展jar包,只需在framework/base/中的ext-dir添加src目录即可。
- :android系统资源库。
- :android的sdk中核心代码。
- :ime命令所需jar包,用于查看当前话机输入法列表、设置输入法。源码目录:framework/base/cmds/ime
- :input命令所需的jar包,用于模拟按键输入。源码目录:framework/baes/cmds/input
- :java蓝牙API,用于对象交换协议。源码目录:framework/base/obex
- :执行monkey命令所需jar包。源码目录:framework/base/cmds/monkey
- :执行pm命令所需的jar包,pm详情见adb shell pm,源码目录:framework/base/cmds/pm
- :话机框架层服务端的编译后jar包,配合libandroid_servers.so在话机启动时通过SystemServer以循环闭合管理的方式将各个service添加到ServiceManager中。源码目录:framework/base/service
- : sqlite的Java DataBase Connextivity jar包。
- :svc命令所需jar包,可硬用来管理wifi,power和data。源码目录:framework/base/cmds/svc,详情见:/2011/02/android_svc/
以上都是自己的理解或者网上查找资料后获得的,如有误点,欢迎指出。
/s/blog_757397730101efy7.html
1.目录树
/framework/base/api
/framework/base/awt
/framework/base/build
/framework/base/camera
关 于camera的HAL接口库。最终生成native共享库,编译时根据是否定义USE_CAMERA_STUB来决定系统是否有Camera硬件支持。若没有实际的Camera硬件,则编译时会和虚拟camera静态库(,由,fakecamera生成)链接生成。
/framework/base/cmds关于android系统启动时用到的command等
/framework/base/cmds/am
/framework/base/cmds/app_process
可执行文件app_process,该文件可以根据输入参数决定是Zygote启动(参考中的语句 service zygote/system/bin/app_process -Xzygote /system/bin --zygote--start-system-server).
该执行程式会链接libandroid_runtime.so去链接androidruntime。后面我会在详细分析此部分。
/framework/base/cmds/backup
可执行程式btool
/framework/base/cmds/bmgr
java可执行程式, backup manager,java库形式分发到目标系统/system/framework/
/framework/base/cmds/bootanimation
android启动动画效果程式,该程式必须在androidruntime启动后运行。
/framework/base/cmds/dumpstate
android系统调试辅助工具,生成可执行程式dumpstate,同时建立两个程式dumpcrashbugreport指向该程式。
/framework/base/cmds/dumpsys
生成可执行程式dumpsys
/framework/base/cmds/ime
java可执行程式 ,IME输入法 input method manager,java库形式分发到目标系统/system/framework/
/framework/base/cmds/input
java可执行程式,管理input事件例如key event,text event等,java库形式分发到目标系统/system/framework/
/framework/base/cmds/installd
可执行程式installd,installmanager,仅在非simulator系统中运行,安装到目标系统/system/bin/installd
/framework/base/cmds/keystore
可执行程式keystore,用途???仅在非simulator系统中运行,安装到目标系统/system/bin/keystore
/framework/base/cmds/pm
java可执行程式,packagemanager,java库形式分发到目标系统/system/framework/
/framework/base/cmds/runtime
runtime可执行程式,仅在simulator中使用
/framework/base/cmds/service
service可执行程式,用来查找,检查,呼叫service,安装到目标系统/system/bin/service
/framework/base/cmds/servicemanager
android系统的servicemanager,可执行文件,安装到目标系统/system/bin/servicemanager
servicemanager会和kernel的binderdriver协作共同完成service的添加、查询、获取、检查等。
/framework/base/cmds/surfaceflinger
surfaceflinger可执行程式,安装到目标系统/system/bin/surfaceflinger,
该程式会初始化surfaceflinger,surfaceflinger::inistantiate(),该程式会链接到
/framework/base/cmds/svc
/framework/base/cmds/system_server
systemserver库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的核心,此处主要指applicationframework,java库形式分发到/system/framework/
包括,
/framework/core/jni
framework所需的JNI接口实现库,分发到/system/lib/lib/libandroid_runtime.so
/framework/core/res
framework所需的资源文件打包,/system/framework/,
/framework/include
存放头文件*.h
/framework/libs
/framework/libs/audioflinger,
生成,
若无实际硬件和静态库(audiointerface虚拟设备)链接。
若有实际硬件和链接,若支持bluetooth,则和链接
/framework/libs/surfaceflinger
生成
/framework/libs/ui
生成
/framework/libs/utils
生成
/framework/services/java/*
system serverjava可执行程式,分发到/system/framework/
/framework/services/jni/*
system serverJNI接口实现库,libanroid_servers.so,分发到/system/lib/libanroid_servers.so
systemserverJNI接口实现库,libanroid_servers.so,分发到/system/lib/libanroid_servers.so
启动 Zygote
-Xzygote /system/bin --zygote--start-system-server
AndroidRuntime->AppRuntime
int main(int argc,const char* constargv[])
{
}
其中("",startSystemServer);
呼叫Android::Start(const char* className,const boolstartSystemServer)
/framework/base/core/jni/
该函数的处理内容:
1.处理Jave Virtual Machine的一些参数选项;
2.创建DalvikJava虚拟机,JNI_CreateJavaVM(&mJavaVM,&env,&initArgs);
3.注册Android Runtime中的JNI接口给虚拟机;
4.呼叫Java类的main函数
在类的main函数中,
1.注册Zygote socket用来接收请求;
2.加载preloadedclass、resources用来加快启动速度,文件清单在中的preloaded-classes,中的res中;
3.启动System Server;
OnZygoteInit函数
函数会呼叫类的main函数。
在init2函数中,android创建了serverthread,在该thread中android开始注册各种service到servicemanager中
包括EntropyService,PowerManager,ActivityManager,Telephony,PackageManager,ContentManager,ContentProvider,
BatteryService,HardwareService,AlarmManager等等。