android小结

时间:2024.4.5

Android 小结

一、Android架构 ................................................................................................................. 1

二、Android的三种开发工作 ............................................................................................. 2

1、Android 应用程序开发 ............................................................... 3

2、Android系统开发的结构 ............................................................. 4

3、Android移植开发的结构 ............................................................. 5

3.1 硬件抽象层 ........................................................................ 6

3.2 Android 特有驱动 .............................................................. 7

三、Android的底层库 ........................................................................................................ 8

四、Binder机制 .................................................................................................................. 8

五、Android应用开发方式 ................................................................................................. 8

六、Android源码 ................................................................................................................. 9

1、Android 的核心工程 ................................................................................................. 9

2、Android 扩展工程 ................................................................................................... 10

3、Android 中的Java程序包 ..................................................................................... 10

附2.6.29 Android内核与标准Linux内核区别 ........................................................... 10

一、Android架构

分为四层:

? 应用程序层(java应用程序,用户空间)

? 应用程序框架层(java框架,用户空间)

? 系统运行库层(native c/c++框架及java运行环境,用户空间) ? Linux核心层(linux内核及驱动,内核空间)

?

二、Android的三种开发工作

? 应用开发

? 系统开发

? 移植开发

1、Android 应用程序开发

android小结

2、Android系统开发的结构

android小结

3、Android移植开发的结构

android小结

3.1 硬件抽象层

android小结

? Android的硬件抽象层是能以封闭源码形式提供硬件驱动模块。HAL的目的是为了把Android framework与Linux kernel隔开,让Android不至过度依赖Linux kernel,以达成kernel independent的概念,也让Android framework的开发能在不考量驱动程序实作的前提下进行发展。

? HAL stub是一种代理人的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数,并由Android runtime向HAL取得stub的operations,再callback这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即module ID,就可以取得操作函数。

引进HAL的原因:

Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开

linux的GPL束缚。思路是把控制硬件的动作都放到了Android HAL中,而linux driver仅仅完成一些简单的数据交互作用,甚至把硬件寄存器空间直接映射到user space。而Android是基于Apache的license,因此硬件厂商可以只提供二进制代码,所以说Android只是一个开放的平台,并不是一个开源的平台。也许也正是因为Android不遵从GPL,所以Greg Kroah-Hartman才在2.6.33内核将Andorid驱动从linux中删除。GPL和硬件厂商目前还是有着无法弥合的裂痕。

3.2 Android 特有驱动

1) Ashmem 匿名共享内存驱动

2) Logger 轻量级的log驱动

3) Binder基于openBinder的驱动,为android平台提供IPC支持

4) Android power Management 电源管理模块

5) Low Memory killer 缺少内存时杀死进程

android小结

6) Android PMEM物理内存驱动。

三、Android的底层库 ? 标准c/c++库bionic

? C语言工具库libutils

? Init进程

? Shell工具

? C++工具库libutils

四、Binder机制

? Binder:由Binder服务器 Binder驱动 Binder客户端构成。 ? Android系统的重要进程:/init

/system/bin/mediaserver

? Zygote:由init进程启动,其又启动system_server和所有的android应

用程序。

? Zygote进程包含两个主要模块:

1、 Socket服务器端。用来接收启动新的Dalvik进程的命令。

2、 Framework共享类和资源。当新的Dalvik进程孵化出来后就不需要再

来装在framework的这些类和资源了。

/system/bin/servicemanager system_server zygote

五、Android应用开发方式

? 基于源码

? 基于SDK

六、Android源码 认识Android源代码结构

Android代码的工程分为3个部分:

? 核心工程(Core Project):建立Android 系统的基础,在根目录的各个文件夹中。

扩展工程(External Project):使用其他开源项目扩展的功能,在external 文件夹中。

包(Package):提供Android 的应用程序和服务,在package 文件夹中。 ? ?

1、Android 的核心工程

Android 的核心工程包含了对Android系统基本运行的支持,以及Android系统的编译系统,工程的内容如下表:

Android 的核心工程

android小结

android小结

除了上表列出的工程外,还有其他的工程,但大都是Android系统第2个层次的源代码。

2、Android 扩展工程

Android 的扩展工程包含在external文件夹中,是一些经过修改后适应Android系统的开源工程。有一些工程在主机上运行,也有些在目标机上运行。由于包含的扩展工程就多,就不一一列出,感兴趣的童鞋可以自己收集一些资料学习一下。

android小结

3、Android 中的Java程序包

略过

附2.6.29 Android内核与标准Linux内核区别

总的区别可以归纳如下:

? ARCH -- 这是Android修改了arch/arm下面的一些文件:

arch/arm:

Chg: arch/arm/kernel/entry-armv.S

Chg: arch/arm/kernel/module.c

Chg: arch/arm/kernel/process.c

Chg: arch/arm/kernel/ptrace.c

Chg: arch/arm/kernel/setup.c

Chg: arch/arm/kernel/signal.c

Chg: arch/arm/kernel/traps.c

Chg: arch/arm/mm/cache-v6.S

Chg: arch/arm/vfp/entry.S

Chg: arch/arm/vfp/vfp.h

Chg: arch/arm/vfp/vfphw.S

Chg: arch/arm/vfp/vfpmodule.c

? Goldfish -- 这是Android为了模拟器所开发的一个虚拟硬件平台。Goldfish执行arm926T指令

(在2.6.29中,goldfish也支持ATMv7指令),但是在实际的设备中,该虚拟平台的文件不会被编译。 arch/arm/mach-goldfish:

New: arch/arm/mach-goldfish/audio.c

New: arch/arm/mach-goldfish/board-goldfish.c

New: arch/arm/mach-goldfish/pdev_bus.c

New: arch/arm/mach-goldfish/pm.c

New: arch/arm/mach-goldfish/switch.c

New: arch/arm/mach-goldfish/timer.c

? YAFFS2 -- 和PC把文件存储在硬盘上不一样, 移动设备一般把Flash作为存储设备。尤其是NAND

flash应用非常广泛(绝大多数手机用的都是NAND flash,三星的一些手机使用的是OneNAND)。NAND flash具有低成本和高密度的优点。

YAFFS2 是“Yet Another Flash File System, 2nd edition" 的简称。 它提供在Linux内核和NAND flash设备 之前高效率的接口。 YAFFS2并没有包含在标准的Linux内核中, Google把它添加到了Android的kernel

fs/yaffs2:

New: fs/yaffs2/devextras.h

New: fs/yaffs2/Kconfig

New: fs/yaffs2/Makefile

New: fs/yaffs2/moduleconfig.h

New: fs/yaffs2/yaffs_checkptrw.c

New: fs/yaffs2/yaffs_checkptrw.h

New: fs/yaffs2/yaffs_ecc.c

New: fs/yaffs2/yaffs_ecc.h

New: fs/yaffs2/yaffs_fs.c

New: fs/yaffs2/yaffs_getblockinfo.h

New: fs/yaffs2/yaffs_guts.c

New: fs/yaffs2/yaffs_guts.h

New: fs/yaffs2/yaffsinterface.h

New: fs/yaffs2/yaffs_mtdif1.c

New: fs/yaffs2/yaffs_mtdif1.h

New: fs/yaffs2/yaffs_mtdif2.c

New: fs/yaffs2/yaffs_mtdif2.h

New: fs/yaffs2/yaffs_mtdif.c

New: fs/yaffs2/yaffs_mtdif.h

New: fs/yaffs2/yaffs_nand.c

New: fs/yaffs2/yaffs_nandemul2k.h

New: fs/yaffs2/yaffs_nand.h

New: fs/yaffs2/yaffs_packedtags1.c

New: fs/yaffs2/yaffs_packedtags1.h

New: fs/yaffs2/yaffs_packedtags2.c

New: fs/yaffs2/yaffs_packedtags2.h

New: fs/yaffs2/yaffs_qsort.c

New: fs/yaffs2/yaffs_qsort.h

New: fs/yaffs2/yaffs_tagscompat.c

New: fs/yaffs2/yaffs_tagscompat.h

New: fs/yaffs2/yaffs_tagsvalidity.c

New: fs/yaffs2/yaffs_tagsvalidity.h

New: fs/yaffs2/yportenv.h

? Bluetooth -- Google为Bluetooth打上了patch,fix了一些Bluetooth的bug

drivers/bluetooth:

Chg: drivers/bluetooth/bfusb.c

Chg: drivers/bluetooth/bt3c_cs.c

Chg: drivers/bluetooth/btusb.c

Chg: drivers/bluetooth/hci_h4.c

Chg: drivers/bluetooth/hci_ll.c

? Scheduler -- 对于Scheduler的改变非常小,我对它并没有去研究。

Chg: kernel/sched.c

? New Android Functionality -- 除了fix一些bug以及其他一些小的更改,Android增加了一些新的功能,

介绍如下:

? IPC Binder -- The IPC Binder is an Inter-Process Communication (IPC) mechanism. It

allows processes to provide services to other processes via a set of higher-level APIs than are available in standard Linux. An Internet search indicated that the Binder concept

originated at Be, Inc., and then made its way into Palm's software, before Google wrote a new Binder for Android.

New: drivers/staging/android/binder.c

? Low Memory Killer -- Android adds a low-memory killer that, each time it's called, scans

the list of running Linux processes, and kills one. It was not clear in our cursory

examination why Android adds a low-memory killer on top of the already existing one in the standard Linux kernel.

New: drivers/staging/android/lowmemorykiller.c

? Ashmem -- Ashmem is an Anonymous SHared MEMory system that adds interfaces so

processes can share named blocks of memory. As an example, the system could use

Ashmem to store icons, which multiple processes could then access when drawing their UI. The advantage of Ashmem over traditional Linux shared memory is that it provides a means for the kernel to reclaim these shared memory blocks if they are not currently in use. If a process then tries to access a shared memory block the kernel has freed, it will receive an error, and will then need to reallocate the block and reload the data.

New: mm/ashmem.c

? RAM Console and Log Device -- To aid in debugging, Android adds the ability to store

kernel log messages to a RAM buffer. Additionally, Android adds a separate logging module so that user processes can read and write user log messages.

New: drivers/staging/android/ram_console.c

? Android Debug Bridge -- Debugging embedded devices can best be described as

challenging. To make debugging easier, Google created the Android Debug Bridge (ADB), which is a protocol that runs over a USB link between a hardware device running Android and a developer writing applications on a desktop PC.

drivers/usb/gadget:

New: drivers/usb/gadget/android.c

Chg: drivers/usb/gadget/composite.c

Chg: drivers/usb/gadget/f_acm.c

New: drivers/usb/gadget/f_acm.h

New: drivers/usb/gadget/f_adb.c

New: drivers/usb/gadget/f_adb.h

New: drivers/usb/gadget/f_mass_storage.c

New: drivers/usb/gadget/f_mass_storage.h

Android also adds a new real-time clock, switch support, and timed GPIO support. We list the impacted files for these new modules at the end of this document.

? Power Management -- Power management is one of the most difficult pieces to get

right in mobile devices, so we split it out into a group separate from the other pieces. It's interesting to note that Google added a new power management system to Linux, rather than reuse what already existed. We list the impacted files at the end of this document. kernel/power:

New: kernel/power/consoleearlysuspend.c

New: kernel/power/earlysuspend.c

New: kernel/power/fbearlysuspend.c

Chg: kernel/power/main.c

Chg: kernel/power/power.h

Chg: kernel/power/process.c

New: kernel/power/userwakelock.c

New: kernel/power/wakelock.c

? Miscellaneous Changes -- In addition to the above, we found a number of changes that

could best be described as, 'Miscellaneous.' Among other things, these changes include additional debugging support, keypad light controls, and management of TCP networking.

更多相关推荐:
Android总结

Android总结第一步Android1在Windows下搭建Android开发环境以及HelloWorld程序搭建Android的开发环境以及写一个简单的示例程序在Windows下搭建Android开发环境A...

android基本知识点总结

一android四大组件ActivityServiceBroadcastReceiverContentProvider二Activity生命周期三横竖屏切换时的生命周期1新建一个Activity并把各个生命周期...

一周学习Android 的总结

初学Android的总结一对Android的初步认识有以下几方面1Android是什么Android是Google在20xx年11月首次发布的当时它被定位成一款针对智能手机的操作系统现在是一个专门针对移动设备的...

android开发总结

Android开发简介Android应用程序的五大基本组件Activity应用表示层基类Activity一个活动表示一个可视化的用户界面关注一个用户从事的事件例如一个活动可能表示一个用户可选择的菜单项列表或者可...

Android总结

AndroidContentprovidercontentProvider对外共享数据统一数据访问接口多个项目可以访问1UriUri的作用为互联网上所涉及的所有资源HTML文档图像视频片段程序等提供一种统一的唯...

Android个人学习笔记总结

Android学习笔记总结第一步Android1在Windows下搭建Android开发环境以及HelloWorld程序搭建Android的开发环境以及写一个简单的示例程序在Windows下搭建Android开...

Android学习心得

Android学习心得这学期我们新开了一门课程android的研发在老师们的介绍下我们了解android的开发环境以及控件的功能刚开始接触Android觉得既陌生又亲切陌生在于没有学过具体的开发软件亲切在于它在...

Android面试题总结强劲版(一)

自己总结的最强android应用面试题集1activity的生命周期onCreate在activity第一次被创建的时候调用这里是你做所有初始化设置的地方创建视图绑定数据至列表等如果曾经有状态记录参阅后述Sav...

Android的Handler总结

一Handler的定义主要接受子线程发送的数据并用此数据配合主线程更新UI解释当应用程序启动时Android首先会开启一个主线程也就是UI线程主线程为管理界面中的UI控件进行事件分发比如说你要是点击一个Butt...

Android面试题总结强劲版(一)

自己总结的最强android应用面试题集1activity的生命周期onCreate在activity第一次被创建的时候调用这里是你做所有初始化设置的地方创建视图绑定数据至列表等如果曾经有状态记录参阅后述Sav...

Android页面布局总结

布局在android中我们常用的布局方式有这么几种1LinearLayout线性布局里面只可以有一个控件并且不能设计这个控件的位置控件会放到左上角线性布局分为水平线性和垂直线性二者的属性分别为androidor...

Android笔试总结

笔试总结笔试共10道题不限时间答案整理自互联网不保证完全正确仅供参考1请谈一下Android系统的架构答Android系统采用了分层架构从高层到低层分别是应用程序层应用程序框架层系统运行库层和linux核心层2...

android总结(40篇)