這裡簡單的介紹了Android的java環境基礎,在後面一節中會結合具體的實例來理解這一節的內容。
一、Dalvik虛擬機
Dalvik是android的程序的java虛擬機,代碼在dalvik/下,
./
|-- Android.mk
|-- CleanSpec.mk
|-- MODULE_LICENSE_APACHE2
|-- NOTICE
|-- README.txt
|-- dalvikvm 虛擬機的實現庫
|-- dexdump
|-- dexlist
|-- dexopt
|-- docs
|-- dvz
|-- dx
|-- hit
|-- libcore
|-- libcore-disabled
|-- libdex
|-- libnativehelper 使用JNI調用本地代碼時用到這個庫
|-- run-core-tests.sh
|-- tests
|-- tools
`-- vm
二、android的java框架
android層次中第3層是java框架,第四層就是java應用程序。
android的java類代碼,主要是在frameworks/base/core/java/下,
./
|-- android
|-- com
|-- jarjar-rules.txt
`-- overview.html
我們再看一下frameworks/base/目錄
./
|-- Android.mk
|-- CleanSpec.mk
|-- MODULE_LICENSE_APACHE2
|-- NOTICE
|-- api
|-- awt
|-- build
|-- camera
|-- cmds
|-- common
|-- core
|-- data
|-- docs
|-- graphics
|-- include
|-- keystore
|-- libs
|-- location
|-- media
|-- native
|-- obex
|-- opengl
|-- packages
|-- preloaded-classes
|-- sax
|-- services
|-- telephony
|-- test-runner
|-- tests
|-- tools
|-- vpn
`-- wifi
這裡也有android的java框架代碼。
三、JNI
在android中,通過JNI,java可以調用C寫的代碼,主要的實現是在frameworks/base/core/jni,通過查看Android.mk,我們可以看到最後生成了libandroid_runtime.so,具體實現JNI功能需要上面我們介紹的libnativehelper.so,
四、系統服務之java
1、binder,提供android的IPC功能
2、servicemanager,服務管理的服務器端
3、系統進程zygote,負責孵化所有的新應用