码迷,mamicode.com
首页 > 移动开发 > 详细

Android深度探索

时间:2016-05-01 19:17:05      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

深度探索(卷一)HAL与驱动开发很不情愿的在岳老师的“威逼利诱”,终于草草的看完了四章,算是完了他的初步任务,听说还要写感想,额,能怎么办,那就写呗,为什么是草草呢,这是因为名为深度探索,但实则是囫囵吞枣,但所幸的是这次的逼迫个人感觉还是挺有效果的,哈哈,感觉自己好贱啊,非要别人抽几鞭子才动,哎,既然谈感想那就谈谈呗。

第一章 Android系统移植与驱动概述

本章让我知道Android原生的代码支持的设备并不多,因此,要想在自己的设备上完美运行Android,就需要另外开发一些程序,使得Android可以识别相应设备中的硬件。这个为特定设备定制Android的过程被称为“移植”。而这个内核呢在计算机科学中,又称为核心,是操作系统最基本的部分,主要负责管系统资源,它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问时有限的,并由内核决定一个程序在什么时候对某部分硬件操作多长时间。因为直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法,来完成这些操作。通过进程间的通信机制及系统调用,应用进程可间接控制所需的硬件资源(特别是处理器及IO设备)。其中,Android移植分为两部分:应用移植和系统移植。Android系统的划分:第一层,Linux内核(主要包括驱动程序以及管理内存、进程、电源等资源的程序);第二层,C/C++代码库(主要包括Linux.so文件以及嵌入到API(程序中的NDK代码));第三层,Android SDK API(直接面向应用程序的Java APK);第四层,应用程序(直接面向最终用户的Java应用程序)。而Android移植的主要工作:1、移植Linux驱动;2、移植HALLinux内核版本现主要维护的有三个:Linux2.4Linux2.6Linux3.x

查看Linux系统的内核版本:在Linux终端执行uname -a或者cat /proc/version。其中/proc不是普通的文件系统,而是系统内核的映像,也就是说,该目录中的文件是存放在系统内存之中的,它以文件系统的方式为访问系统内核数据的操作提供接口。Linux内核版本号由下面几部分组成:1、版本主号;2、次版本号;3、修订版本号;4、微调版本号;5、为特定的Linux系统特别调校的描述。降低对象与对象之间耦合度最有效的方法是通过接口对类进行抽象,也就是说抽象度越高,耦合度越低。驱动是直接和硬件交互的一类程序,负责对硬件进行抽象。Linux将存储器和外设分为3大类:字符设备、块设备和网络设备。Linux驱动编程。Linux驱动只与Linux内核有关,与用户使用的Linux系统无关。

第二章 搭建Android开发环境

本章主要介绍了如何搭建Android底层开发的环境,主要包括Android应用程序开发环境、Android NDK 开发环境和交叉编译环境的搭建。Android底层开发不仅需要交叉编译环境,还需要开发Android应用程序的环境。开发测试和调试Linux驱动、HAL程序库需要哪些工具:1JDK6或以上版本;2Eclipse 3.4或以上版本;3ADT(用于开发Android应用程序);4CDT(用于开发Android NDK程序)5Android SDK6Android NDK7、交叉编译环境;8Linux内核源代码;9Android源代码;10、用于调试开发板的串口工具:minicom。本章主要介绍了Ubuntu Linux 环境下的Android开发环境的配置。整章基本没什么笔记,基本通过“傻瓜式”的跟读完成,操作性十分强,涉及到少许的命令及专有名词需要记忆。再看这一章时有种冲动就是我的电脑怎么就不是Linux系统,同时也感觉到这个系统好强大,感觉自己使用的Windows好像一个公主,而它才是真正的国王。恩,就是这种感觉,整章的代入感很强,让我跟Linux贴的很近去接触,深深的被它的强大所吸引。

第三章 Git使用入门

刚看到这个时候我以为这又是什么命令了或者函数之类的,但我错了,它其实是一个功能强大的源代码管理软件(哈哈,请容许我这个还没入门的人out一下)。这也正是开源的Linux系统下的产物,可以说是人们得以进步的一个阶梯,那既然有梯子,还等什么呢,还不赶紧顺着爬,于是耐着性子往下读,从安装Git到查看Git文档再到大篇源代码的提交与获取,终于完了,一整章都是在展示Git的基本用法。正如作者所说虽然Git并不是学习Android移植和Linux内核、驱动开发必须掌握的技术。但对于想深入研究这些低层技术的读者,Git将成为学习过程中必不可少的工具。学习新技术的最好方式不是阅读技术书籍、也不是在网上查看别人写的文章,而是直接阅读自己感兴趣的源代码。毕竟源代码是最能体现软件作者的真正思路的。就像学习Linux内核开发,只是找几本所谓的“权威”书籍来看,并不能真正体会Linux内核的核心设计理念。而唯一可以和Linux内核走进一点,甚至融入Linux内核的方式就是直接阅读Linux内核的源代码。虽然一开始很难理解这些晦涩到诗人崩溃的代码,不过随着不断做各种实验,并通过一些内核理论相辅助,那些曾经晦涩的源代码会像潘多拉魔盒一样打开。自2005Git问世以来,以其强大的功能近乎完美的理念和极高的性能逐渐征服了广大技术人员的心,现在已经有越来越多的开源项目由其他的版本管理工具迁到Git上。这些开源的项目对于开发人员来说无疑是巨大的宝藏,而这把钥匙就是Git。因为Linux内核完全是使用Git管理的,不掌握Git,简直就是寸步难行。这是作者的部分感悟,和一些寄语。但我只能感悟到皮毛,更多的停留在:哦,Git这个软件好厉害啊。其它的貌似没什么感觉,怎么可能有感觉呢,连代码都没有好好敲了几天的我来说,再一次的贬低一下自己吧。

第四章 源代码的下载和编译

主要介绍了如何下载和编译Android源代码和Linux内核源代码。步骤很清晰,还是跟前面的感觉一样一到这种时候只能作为一个默默的追随者,跟着作者似懂非懂,似会不会的阅读下去,有种想把这些命令步骤真的和电脑一样存进脑袋的冲动,但是并不能,不过在阅读过程中还是会碰到一些自己熟悉的命令,这时会有点小高兴,原来自己还不是什么都不懂,其实也是自我安慰吧,一点点的安慰,一步步的自我强大,希望是这样。这里Android移植主要就是Linux内核的移植。而Linux内核移植主要是Linux驱动的移植。所以为了开发和测试Linux驱动。需要在Ubuntu Linux下搭建两套开发环境:Android应用开发环境和Linux内核开发环境。其中Linux内核开发环境是本章的重点,在本章的大量内容当中也介绍了如何搭建两种开发环境,重点还得实践掌握。

这整体也就是作者的第一篇的大致内容出去开发板那一章,勉强算是把Android驱动开发前的准备阅读完了,以上也就是我阅读四章内容的一些心路历程,其中包含了一些内容摘要,还有阅读时候的内心波动,总体感觉书没有白读,把开始对老师这种吃饱了撑的想法抹去了。

Android深度探索

标签:

原文地址:http://www.cnblogs.com/ls--blog/p/5450909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!