安卓移植读书笔记

第一章

通过阅读本章,初步了解和认识了Android系统的一个整体结构,分为linux内核、c/c++代码库、Android SDK API和应用程序四层。Android的系统移植和应用移植,应用移植是指将一个Android应用程序移植到一个不同的硬件平台上去。需要对代码进行修改从而达到适应其他硬件的效果。系统移植则是让Android系统适应各主流硬件厂商的CPU架构,同时识别各平台上的硬件,其中的重头戏即为linux驱动的开发和移植。再者就是一些关于linux内核的知识,学到使用命令uname –a和cat  /proc/version来查看内核的版本,还有版本号各位分别所代表的内容。然后就是大体介绍了驱动程序的一些概念,设备驱动的好处是使得硬件人员和软件人员可以从自己的角度来思考问题而不需要去考虑是否和对方的成果兼容,驱动是直接与硬件交互的一类程序,负责对硬件进行抽象。设备驱动可以分为字符设备、块设备和网络设备。字符设备以串行顺序来访问。块设备则通过系统的缓冲区来访问,但是他们都是通过使用文件系统的操作接口来访问的。网络设备则与他们完全不同。驱动能否通用的根本取决于Linux的内核版本是否相同。

附一张查看内核版本的图:

第二章

在本章中主要介绍了在linux Ubuntu下配置安卓开发环境的问题,包括在Ubuntu下安装JDK,安装Android SDK,安装eclipse,安装配置ADT并且建立AVD,安装Android NDK,以及安装交叉编译环境CodeSourcery,由于进行开发的pc机使用的是x86架构,采用的是复杂操作指令集,但是运行目标的机器为Android的ARM架构,所以需要安装配置一个交叉编译环境,但是交叉编译环境的安装配置整个过程比较复杂,而且可以使用别人已经编译好的交叉编译环境。所以使用了从别人那里拷贝来的完整的交叉编译环境。在整个安装过程中需要注意的是在linux系统下安装软件程序需要配置环境变量,以安装JDK为例,下载JDK,将tar.gz文件解压到指定路径中,解压完成后需要在终端输入gedit /etc/profile,在配置文件中输入export PATH=.:jdk/jdk1.8/bin=PATH。还有一点需要注意的是添加过程中需要超级用户权限才能修改这个文件。所以需要切换到超级用户之后才能执行这个操作。然后重新装载profile文件就完成了。

安装jdk为例,上几张图

这张图是未拥有超级用户权限时修改文件出现的警告。

这个是配置完成路径之后进行的执行修改后的文件以及测试环境变量的结果

第三章

本章学习到了一些关于GIT的操作,在安装git的过程中,发现书中补充的那些git的扩展软件中都无法安装,输入后的提示为无效的操作。然后使用了man git-checkout命令查看了关于git的帮助手册,之后开始建立版本库,需要切换到root用户下才能执行此操作。建立了一个/demo/helloworld-git目录在其中执行了git init建立了本地库。接着在使用git commit –m这个命令将文件提交到本地库的过程中,系统提示需要配置用户的名字和e—mail地址,格式为git config –username “···”以及git config – useremail [email protected] 再次输入将文件提交到本地库的命令提示操作成功,再就是通过git branch来建立不同的分支,他们都可以在被审核通过后添加到主分支中,使用git checkout newbranch可以来切换分支进行操作。还有一些涉及git-hub的一些知识,与本地库不同的远程版本库。通过使用这个git-hub可以使用git clone这个命令下载很多不同的开源项目。

第四章

本章主要介绍的是如何从git上下载Android和linux的源代码以及对他们的编译还有测试,大致介绍了安卓源代码的目录结构以及使用repo sync来下载一部分的安卓源代码。下载的工程名需要在路径之前加上/platform,如果没有安卓源代码可以通过使用repo init来生成一个manifest.xml的一个文件,它包含了安卓源代码版本库中包含所有的工程的列表。其中每一行代表一个工程。Path代表工程的路径,name代表工程的名字。还可以使用git clone来下载安卓源代码,不过也需要工程名。接下来就是编译安卓的源代码,需要使用envsetup.sh这个脚本来初始化编译命令,mm需要在指定的路径下才能编译,而mmm则可以在任一级目录通过指定路径名来编译,通过使用make –jn可以同时使用多个cpu来编译安卓的源代码,提高了效率。编译linux内核源代码使用git clone,使用git checkout来到处linux内核。然后介绍了一下下载好的linux内核源代码的整个的目录结构,通过安装安卓内核的编译环境来编译linux内核源代码,需要配置Makefile文件,将arch设置为arm,将cross_compile设置为arm-none-linux-gnueabi。通过使用make config、make menuconfig、make oldconfig、make xconfig来配置,然后通过编译linux内核生成一个Zimage文件,该文件可以直接安装到开发板上。

建立repo目录,设置环境变量

下载安卓源代码

应该是谷歌被墙的原因无法下载

下载内核的镜像也是无法连接到谷歌

时间: 2024-08-09 11:36:05

安卓移植读书笔记的相关文章

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu

读书笔记打一章

读书笔记第一章安卓是免费的,任何人都可以利用安卓的源代码定制完全属于自己的嵌入式系统,这极大地促进了安卓的发展,但是想要在各种设备上运行安卓系统,需要为各种设备定制安卓系统,这就叫做安卓系统的移植.安卓系统架构分为四层:1.Linux内核 2.C/C++代码库 3.Android SDK API 4.应用程序.安卓系统移植的主要工作:除了移植CPU之外,最重要的就是移植Linux驱动,还要增加一个抽象层.Linux内核版本:目前主要有三个:Linux2.4.Linux2.6.Linux3.x,而

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

《内核设计与实现》第一章读书笔记

<内核设计与实现>第一章读书笔记 第一章:Linux内核简介 1.1 Unix的历史 Unix强大的特点 A.简洁,几百个系统调用,明确的设计目的 B.文件对待所有东西 C.移植性强(C语言) D.进程创建快,使用fork()系统调用. E.进程间通信元语,进程间通信机制 1.2 linux的简介 Linux系统的基础是内核.C库.工具库和系统的基本工具. 1.3 操作系统和内核简介 内核:管理者,操作系统的核心 通常一个内核由负责响应中断的中断服务程序和网络.进程间通信等系统服务共同组成.

《解释的工具:生活中的经济学原理》读书笔记3

一.第四章 在这一章里,作者站在经济增长与经济循环往复的角度去探讨社会中的经济现象.人类自古是从农业经济逐渐转化为工商业经济的,可是农业经济是一个有序的循环,工商业经济也是一个有序的循环,到底是什么因素使得经济能够打破原本的循环而迈向新的循环呢?换个角度来看同一类问题,经济本身是有发展有衰退的,发展和衰退构成了一个国家经济的循环,但是是什么力量能够使得经济封闭的循环被打破转而变成经济增长呢?对于当前需要突破瓶颈继续发展的我们这个社会来说,这的确是一个既重要又紧急的问题啊!在这一章里,作者先阐明财

《代码阅读方法与实践之读书笔记之一》

阅读代码是程序员的基本技能,同时也是软件开发.维护.演进.审查和重用过程中不可或缺的组成部分.<代码阅读方法与实践之读书笔记之一>这本书围绕代码阅读,详细论述了相关的知识与技能.我希望通过仔细阅读并学习本书,可以快速地提高我的代码阅读的技能与技巧,进而从现有的优秀代码.算法.构架.设计中汲取营养,提高自身的开发与设计能力.此次读了此书的前四章,以下是我从中汲取到的宝贵养分: 从第一章<导论>一节中我体会到了我们要养成一个经常花时间阅读别人编写的高品质代码的习惯,因为阅读高品质的代码

多定时器处理1(30天自制操作系统--读书笔记)

自认为写过很多MCU程序,但总是回头想想,我所了解的MCU编程思想大体有两种,其中具体的想法我得再找时间写下来. 总想总结出一个可扩展的,易移植的写法,但能力还没到这个层次.但<30天自制操作系统>这本书确实给我了一个思路,就像我已经写过的两篇读书笔记. 将两个独立的内容--FIFO和内存动态管理做到高度模块化,尤其是其中数据结构模型的设计更是我学习的好例子. 今天要学习的设计内容是多定时器处理.原书对这部分的处理讲的很详细,由浅入深,看得我由衷佩服作者,也可能是因为我水平低,稍稍看出点门道来

TJI读书笔记09-访问控制权限

body, td { font-family: 微软雅黑; font-size: 10pt; } TJI读书笔记09-访问控制权限 包,package和import 权限修饰符 接口和实现 类的访问权限控制 首先问一个问题,为什么要有访问控制权限? 安全,这当然是一个很重要的原因. 让类库的使用者只能接触他做需要接触的东西. 另外一方面,当我们去重构和修改代码的时候,如何不影响其他的代码和功能?权限访问控制是可以很好的将"变动的事物"和"不变的事物"区分开来.比如一

读书笔记:《史蒂夫乔布斯传》

读书笔记:<史蒂夫乔布斯传> <乔布斯传>这本书在乔布斯去世后不久就出版了,当时我正在西安出差,看到书店的一则 大型的促销广告,上面印着乔布斯的大型头像,说是2011年10月XX日正式首发,进书店转了一圈竟然发现了一本乔布斯传已经摆在一个醒目的书架上,封面 竟然与广告上的非常相似,查询后明白得到正规授权的传记应该是Walter Isaacson所著的,其它的都是水货. 为了对Jobs保持一定的神秘感,一直没有买入这本书.3月的某一天在陪孩子在书店闲逛时还是忍不住下手了,标价68元,