Android 框架简介
======================= 第一节 ===========================
这里简单的介绍了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,负责孵化所有的新应用
======================= 第二节 ==========================
在我平时工作中主要是进行linux网络子系统的模块开发、linux应用程序(C/C++)开发。在学习和从事驱动模块开发的过程中,如果你对linux系统本身,包括应用程序开发都不了解,那么读内核代码就如同天书,毫无意义,所以我分析框架也是从基本系统api开始的,当然也不会太多涉及到应用程序开发。
好,开始这节主要是讲一个简单的adnroid应用程序,从应用程序出发,到框架代码。
分析的应用程序我们也奉行拿来主义:froyo/development/samples/HelloActivity
./
|-- Android.mk
|-- AndroidManifest.xml
|-- res
|-- src
`-- tests
其他的就多说了,看代码
/**
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package Android.util;
import com.Android.internal.os.RuntimeInit;
import java.io.PrintWriter;
import java.io.StringWriter;
/**
* API for sending log output.
*
*
Generally, use the Log.v() Log.d() Log.i() Log.w() and Log.e()
* methods.
*
*
The order in terms of verbosity, from least to most is
* ERROR, WARN, INFO, DEBUG, VERBOSE. Verbose should never be compiled
* into an application except during development. Debug logs are compiled
* in but stripped at runtime. Error, warning and info logs are always kept.
*
*
Tip: A good convention is to declare a TAG
constant
* in your class:
*
*
private static final String TAG = MyActivity;
*
* and use that in subsequent calls to the log methods.
*
*
*
Tip: Don't forget that when you make a call like
*
Log.v(TAG, index= + i);
* that when you're building the string to pass into Log.d, the compiler uses a
* StringBuilder and at least three allocations occur: the StringBuilder
* itself, the buffer, and the String object. Realistically, there is also
* another buffer allocat
- Android开发技巧:软硬件的巧妙整合(01-16)
- 基于Android的VoIP系统的设计与实现(03-28)
- 基于Android系统的影音播放器开发(03-25)
- Android的阿喀琉斯之踵(07-08)
- Android开发之“hello World”的实现 (07-23)
- 基于Android平台的即时通信系统客户端设计(09-24)