九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Android Framework 分析

 

Android Framework 分析 (一)

目錄樹(shù)

/framework/base/api 

/framework/base/awt

/framework/base/build

/framework/base/camera

關(guān)于cameraHAL接口庫(kù)。最終生成native共享庫(kù)libcamera.so ,編譯時(shí)根據(jù)是否定義USE_CAMERA_STUB來(lái)決定系統(tǒng)是否有Camera硬件支持。若沒(méi)有實(shí)際的Camera硬件,則編譯時(shí)會(huì)和虛擬camera靜態(tài)庫(kù)(libcamerastub.a,camerahardwarestub.cpp,fakecamera生成)鏈接生成libcamera.so。

/framework/base/cmds 關(guān)于android系統(tǒng)啟動(dòng)時(shí)用到的command

/framework/base/cmds/am

/framework/base/cmds/app_process 

可執(zhí)行文件app_process,該文件可以根據(jù)輸入?yún)?shù)決定是Zygote啟動(dòng)(參考init.rc中的語(yǔ)句 service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server.

該執(zhí)行程式會(huì)鏈接libandroid_runtime.so去鏈接android runtime。后面我會(huì)在詳細(xì)分析此部分。

/framework/base/cmds/backup 

可執(zhí)行程式btool

/framework/base/cmds/bmgr

java可執(zhí)行程式, backup manager, java庫(kù)形式分發(fā)到目標(biāo)系統(tǒng)/system/framework/bmgr.jar

/framework/base/cmds/bootanimation

android啟動(dòng)動(dòng)畫(huà)效果程式,該程式必須在android runtime啟動(dòng)后運(yùn)行。

/framework/base/cmds/dumpstate

android系統(tǒng)調(diào)試輔助工具,生成可執(zhí)行程式dumpstate,同時(shí)建立兩個(gè)程式dumpcrash bugreport指向該程式。

/framework/base/cmds/dumpsys

生成可執(zhí)行程式dumpsys

/framework/base/cmds/ime

java可執(zhí)行程式 ,IME輸入法 input method manager, java庫(kù)形式分發(fā)到目標(biāo)系統(tǒng)/system/framework/ime.jar

/framework/base/cmds/input

java可執(zhí)行程式,管理input事件例如key event,text event 等,java庫(kù)形式分發(fā)到目標(biāo)系統(tǒng)/system/framework/input.jar

/framework/base/cmds/installd

可執(zhí)行程式installd,install manager,僅在非simulator系統(tǒng)中運(yùn)行,安裝到目標(biāo)系統(tǒng)/system/bin/installd

/framework/base/cmds/keystore

可執(zhí)行程式keystore,用途????jī)H在非simulator系統(tǒng)中運(yùn)行,安裝到目標(biāo)系統(tǒng)/system/bin/keystore

/framework/base/cmds/pm

java可執(zhí)行程式,package manager,java庫(kù)形式分發(fā)到目標(biāo)系統(tǒng)/system/framework/pm.jar

/framework/base/cmds/runtime

runtime可執(zhí)行程式,僅在simulator中使用

/framework/base/cmds/service

service可執(zhí)行程式,用來(lái)查找,檢查,呼叫service,安裝到目標(biāo)系統(tǒng)/system/bin/service

/framework/base/cmds/servicemanager

android系統(tǒng)的service manager,可執(zhí)行文件,安裝到目標(biāo)系統(tǒng)/system/bin/servicemanager

servicemanager會(huì)和kernelbinder driver協(xié)作共同完成service的添加、查詢、獲取、檢查等。

/framework/base/cmds/surfaceflinger

surfaceflinger可執(zhí)行程式,安裝到目標(biāo)系統(tǒng)/system/bin/surfaceflinger,

該程式會(huì)初始化surfaceflinger,surfaceflinger::inistantiate(),該程式會(huì)鏈接到libsurfaceflinger.so

/framework/base/cmds/svc

/framework/base/cmds/system_server

system server庫(kù)libsystem_server.so->system/lib/libsystem_server.sosystem_server可執(zhí)行程式->system/bin/system_server.

該可執(zhí)行程式不清楚什么用途????

/framework/core/

/framework/core/config

幾個(gè)簡(jiǎn)單java常量,(debug標(biāo)志等)

/framework/core/java/*

framework的核心,此處主要指application framework,java庫(kù)形式分發(fā)到/system/framework/

包括framework.jar,framework-tests.jar sure???

/framework/core/jni

framework所需的JNI接口實(shí)現(xiàn)庫(kù),分發(fā)到/system/lib/lib/libandroid_runtime.so

/framework/core/res

framework所需的資源文件打包,/system/framework/framework-res.apk,

/framework/libs

/framework/libs/audioflinger

生成libaudioflinger.so,

若無(wú)實(shí)際硬件和靜態(tài)庫(kù)libaudiointerface.aaudio interface虛擬設(shè)備)鏈接。

若有實(shí)際硬件和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可執(zhí)行程式service.jar,分發(fā)到/system/framework/service.jar

/framework/services/jni/*

system server JNI接口實(shí)現(xiàn)庫(kù),libanroid_servers.so,分發(fā)到/system/lib/libanroid_servers.so

 

 

android framework 分析(二)

 

啟動(dòng) Zygote

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

AndroidRuntime->AppRuntime

 

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

{

  AppRuntime runtime;生成AndroidRuntime實(shí)例

  ...

  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

 

該函數(shù)的處理內(nèi)容:

1.處理Jave Virtual Machine的一些參數(shù)選項(xiàng);

2.創(chuàng)建Dalvik Java虛擬機(jī),JNI_CreateJavaVM(&mJavaVM,&env,&initArgs)

3.注冊(cè)Android Runtime中的JNI接口給虛擬機(jī);

4.呼叫Java com.android.internal.os.ZygoteInitmain函數(shù)

 

com.android.internal.os.ZygoteInitmain函數(shù)中,

1.注冊(cè)Zygote socket用來(lái)接收請(qǐng)求;

2.加載preloaded class、resources用來(lái)加快啟動(dòng)速度,文件清單在framework.jar中的preloaded-classes,framework-res.apk中的res;

3.啟動(dòng)System Server;

fork出獨(dú)立的進(jìn)程名稱為system-server,呼叫com.android.server.SystemServer類的main函數(shù);

HandleSystemServerProcess函數(shù)中,RuntimeInit.ZygoteInit調(diào)用會(huì)呼叫AppRuntimeOnZygoteInit函數(shù)。

4.RuntimeInit.ZygoteInit函數(shù)會(huì)呼叫 com.android.server.SystemServer類的main函數(shù)。

在此main函數(shù)中,系統(tǒng)首先加載android_server共享庫(kù)libandroid_server.so 源代碼位于/framework/base/service/jni

在該庫(kù)中有定義JNI_OnLoad函數(shù),所以Dalvik在加載 libandroid_server.so 的時(shí)候會(huì)首先呼叫該JNI_OnLoad函數(shù),該函數(shù)將android server注冊(cè)到Java虛擬機(jī)中,包括 KeyInputQueue,HardwareService,AlarmManager,BatteryService,SensorService,SystemServer 等;

      呼叫在libanroid_server.so中注冊(cè)的native函數(shù)init1,該函數(shù)位于/frameworks/base/services/jni/com_android_server_SystemServer.cpp中;

init1函數(shù)呼叫libsystem_server中的system_init函數(shù),該函數(shù)位于/frameworks/base/cmds /system_server/library/system_init.cpp中,該函數(shù)將SurfaceFlinger/AudioFlinger /MediaPlayer/CameraService等組件注冊(cè)到ServiceManager

system_init函數(shù)反過(guò)來(lái)呼叫javacom.android.server.SystemServerinit2函數(shù);

5.init2函數(shù)中,android創(chuàng)建了serverthread,在該threadandroid開(kāi)始注冊(cè)各種serviceservice manager中包括EntropyService,PowerManagerActivityManager,TelephonyPackageManager,ContentManagerContentProvider,BatteryService,HardwareService,AlarmManager等等。

注意該線程使用Looper來(lái)執(zhí)行thread

至此android system server啟動(dòng)完成。 

from http://blog.csdn.net/taoshengyang/archive/2010/06/10/5661699.aspx

 

 

Android Framework 分析 (三)

 

framework主要是一些核心的文件,從后綴名為jar可以看出是是系統(tǒng)平臺(tái)框架。
\system\framework\am.jar
\system\framework\am.odex
\system\framework\android.awt.jar AWT
庫(kù)
\system\framework\android.awt.odex
\system\framework\android.policy.jar
\system\framework\android.policy.odex
\system\framework\android.test.runner.jar
\system\framework\android.test.runner.odex
\system\framework\com.google.android.gtalkservice.jar GTalk
服務(wù)
\system\framework\com.google.android.gtalkservice.odex
\system\framework\com.google.android.maps.jar
電子地圖庫(kù)
\system\framework\com.google.android.maps.odex
\system\framework\core.jar
核心庫(kù),啟動(dòng)桌面時(shí)首先加載這個(gè)
\system\framework\core.odex
\system\framework\ext.jar
\system\framework\ext.odex
\system\framework\framework-res.apk
\system\framework\framework-tests.jar
\system\framework\framework-tests.odex
\system\framework\framework.jar
\system\framework\framework.odex
\system\framework\input.jar
輸入庫(kù)
\system\framework\input.odex
\system\framework\itr.jar
\system\framework\itr.odex
\system\framework\monkey.jar
\system\framework\monkey.odex
\system\framework\pm.jar
包管理庫(kù)
\system\framework\pm.odex
\system\framework\services.jar
\system\framework\services.odex
\system\framework\ssltest.jar
\system\framework\ssltest.odex
\system\framework\svc.jar
系統(tǒng)服務(wù)
\system\framework\svc.odex
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
安卓系統(tǒng)文件夾結(jié)構(gòu)詳解
Android系統(tǒng)文件夾結(jié)構(gòu)解析
安卓ROM簡(jiǎn)單定制、打包、簽名、換字體
Android 4.0 framework源碼修改編譯,模擬器運(yùn)行不起來(lái)——解決
【轉(zhuǎn)】[Android]Dalvik的BOOTCLASSPATH和dexopt流程
Android文件系統(tǒng)的結(jié)構(gòu)及目錄用途、操作方法 整理
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服