android学习计划

最近被安排到android项目组中,从事起了android方面的开发。话说android上,也只是以前在它的应用之上去写一些小程序玩玩而已。还真没想到有一天,我也要从事这方面的开发。世事难料,但这也是一次成长的机会,从初期开始,这是一个很大的挑战。这个小团队对android全都不了解,我们开始的探索之旅。希望在接下来的时候里,我可以在这里记录下我的学习过程。

对于android的产品开发,有些不仅仅是对其上面的应用层做java上的开发,有很多东西android底层是无法实现给我们的需求。在这情况下,我们需要去适配,去添加实现等等的方式来解决自己碰到的问题。

已经开始这方面的探索三个星期左右了,是时候把自己的探索总结出来了。平时都写在公司内网上,也无法拷贝出来,现在努力在这里把自己的学习记录下来。

一、android框架概述

图1 android系统框架图

这是android的系统框架图,从这上面可以看动,android的系统结构分成了四层,由底向上分别为内核层、运行库层、应用框架层、应用层。

内核层:主要还是标准的linux,这里面android对其自身特有的一些硬件又做了相应的驱动开发,并把驱动抽象到了一个android HAL层(硬件抽象层)。致于为何这样做,有这样的一个说法是若是直接在linux内核上进行开发,需要遵守linux的开源策略,这对很多厂家来说,涉及到了商业秘密的问题。

      系统运行库层:系统运行库层,主要是由C和C++语言开发,实现了系统接口调用和其他的运行模块。在这里面如libc实现的并不像平时的linux下的glibc,而是由android自己开发的一个llibc,称为bionic,只有200多k,运行速率明显比glibc实现的来得快多了。但这也就成了我工作一大困难点,因为在这里,libc是原有glibc下有所裁剪,有些功能不实现,如IPC上的接口,消息发送接口,及内存共享接口等没有接供,这让原本linux下源码中依赖这些ipc机制接口的代码移植碰到了一个问题,如何去解决这个问题,是对程序移植的一大挑战。

在运行库层中,还包含着如下:

Surface Manager:对应用层的显示子系统的管理,为应用层提供2D和3D的无疑的融合;

Media Framework:可以支持多种格式的音频和视频的录制和回放,包含对静态图像的读取;

Sqlite: 强大的轻量级的数据库引擎,这是第三方的支持,许多数据库都是以这个Sqlite来作为数据库引擎的,大小大概有500K左右;

OpenGL|ES:实现3D图像的硬件加速,及优化后的软加速;

FreeType:其于位图和矢量图形的字体支持;

WebKit: 功能强大的浏览器引擎,许多主流的浏览器也是基于该引擎的,如chrome,支持android浏览器,并支持内嵌的web视图。

SGL: 底层的2D图形引擎;

SSL:为网络通信提供安全及数据完整性的一种安全协议;

libc : 如一开始提到的,android开发的bionic,提供标准的系统C调用。

另外,在这里,还包含着core libraries和Davik虚拟机,corelibraries提供java的核心库,Davik虚拟机与Java的JVM不同在于,JVM是基于堆栈的,而Davik是基于寄存器,至于两者哪个好哪个坏,业界是一个争论的话题。

应用框架层:这里面,实现了对底层C/C++的调用封装,android为开发都提供了基本的应用接口,是java实现的,java调用底层的C/C++则是通过JNI机制来实现。在这里,好的应用框架开发,可以给上层的应用调用提供更好的帮助。

应用层:用户最直接感受到的一层,这里面实现了与用户交互的过程,不管从界面UI,或是功能上,都与用户相关系,这个好坏决定着用户对产品的认可底。否则,底层封装得再好,也没有用。

二、下一步的学习计划

在最近的三周下来,从一开始的下载android源码,到对它的编译过程、目录结构、添加C程序运行模块的学习,还有原有linux下的程序可移植性的分析。多多少少积累了一些,在接下来的日子里,我要把这些陆陆续续的总结到这上面。

下面列一下我做准备的主题:

1、android源码下载及开发环境的搭建

2、android编译过程的分析

3、如何在android源码上的运行库层,添加自己的静态库&动态库,包括可执行文件

4、如何解决在android的libc上不支持IPC的问题。(总结下之前做的一个linux环境下库的可移植性的分析过程)

5、分析Binder机制(android对IPC的实现方式是binder机制)

6、分析android中的JNI实现机制,并从源码中找一些相关的模块例子分析。

总结:

android源码的分析,碰到了许多的问题,但每次解决一个问题都是一次成长。在这个过程中,记录下问题就是一种成长。

时间: 2024-08-09 07:43:31

android学习计划的相关文章

Android运行时ART简要介绍和学习计划

Android在4.4就已推出新运行时ART,准备替代用了有些时日的Dalvik.不过当时尚属测试版,主角仍是Dalvik. 直到今年的Google I/O大会,ART才正式取代Dalvik.这个消息在科技界引起不小轰动,也吸引不少技术人员对它的"技术分析".可惜这些"技术分析"不过是引用了官方的数据和图表而已.这一系列文章将对ART进行真正的技术分析.老规矩,分析前先进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyang

Android资源管理框架(Asset Manager)简介和学习计划

Android该应用程序包括两个部分组成的:代码和资源. 资源主要是与UI相关的东西,例如UI布局.和其他字符串和照片.代码和资源可以使独立的应用程序来组织的实际需求的基础上,在执行的时候UI.,就能够支持不同的UI布局.这样的特性使得应用程序在执行时能够适应不同的屏幕大小和密度.以及不同的国家和语言等. 在本文中.我们就简要介绍Android的资源管理框架.以及制定学习计划. 在软件开发中.说到代码与资源分离.最easy想到的可能就是Web开发了. 在Web开发中,我们通常会通过CSS文件来描

Android应用程序UI硬件加速渲染技术简要介绍和学习计划

Android系统的流畅性一直被拿来与iOS比较,并且认为不如后者.这一方面与Android设备硬件质量参差不齐有关,另一方面也与Android系统的实现有关.例如在3.0前,Android应用程序UI绘制不支持硬件加速.不过从4.0开始,Android系统一直以"run fast, smooth, and responsively"为目标对UI进行优化.本文对这些优化进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!

Android WebView简要介绍和学习计划

我们通常会在App的UI中嵌入WebView,用来实现某些功能的动态更新.在4.4版本之前,Android WebView基于WebKit实现.不过,在4.4版本之后,Android WebView就换成基于Chromium的实现了.基于Chromium实现,使得WebView可以更快更流畅地显示网页.本文接下来就介绍Android WebView基于Chromium的实现原理,以及制定学习计划. 通过前面几个系列文章的学习,我们知道,Chromium的实现是相当复杂的.这种复杂可以体现在编译出

android转IOS开发学习计划

终于决定从android平台开发转向IOS开发了,从oc起步,入门从<Objective-C编程全解>开始,记录读书笔记. 学习计划: 1.读完<Objective-C编程全解>(一周时间);//日本大牛写的,翻译质量也不错,决定从这本书入门了. 2.学习黑马视频教程基础班(c,oc等基础),(两周左右时间); 3.阅读<精通IOS开发>,辅之以黑马视频IOS部分,(三周左右时间);//这本书评价还可以,计划阅读,最终是否选择还需进一步考察,烂书就不要浪费时间了. 4.

Android应用程序的Activity启动过程简要介绍和学习计划

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activity和Service是应用程序的核心组件,它们以松藕合的方式组合在一起构成了一个完整的应用程序,这得益 于应用程序框架层提供了一套完整的机制来协助应用程序启动这些Activity和Service,以及提供Binder机制帮助它们相互间进行通信.在前 面的文章Android进程间通信(IPC)机制B

Android窗口管理服务WindowManagerService的简要介绍和学习计划

在前一个系列文章中,我们从个体的角度来分析了Android应用程序窗口的实现框架.事实上,如果我们从整体的角度来看,Android应用程序窗口的 实现要更复杂,因为它们的类型和作用不同,且会相互影响.在Android系统中,对系统中的所有窗口进行管理是窗口管理服务 WindowManagerService的职责.在本文中,我们就将简要介绍WindowManagerService的职能以及制定学习计划. 我们知道,在Android系统中,同一时刻,只有一个Activity窗口是激活的,但是,对于W

Android应用程序窗口(Activity)实现框架简要介绍和学习计划

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8170307 前面我们学习了SurfaceFlinger服务的实现原理.有了这个基础之后,从本文开始,我们就可以分析Android系统在Java层的UI实现了.我们知道,在Android应用程序的四大组件中,只有Activity组件与UI相关,它描述的是应用程序窗口,因此,我们就通过它的UI实现来分析Android系统在Java层的UI实现.本文

Android资源管理框架(Asset Manager)简要介绍和学习计划

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分内容组成:代码和资源.资源主要就是指那些与UI相关的东西,例如UI布局.字符串和图片等.代码和资源分开可以使得 应用程序在运行时根据实际需要来组织UI.这样就可使得应用程序只需要编译一次,就可以支持不同的UI布局.这种特性使得应用程序在运行时可以适应不同的 屏幕大小和密度,以及不同的国家和语言等.在