第一章

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

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

移植javac到android android 移植_Android

第二章

在本章中主要介绍了在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为例,上几张图

移植javac到android android 移植_Android_02

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

移植javac到android android 移植_Android_03

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

第三章

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

移植javac到android android 移植_linux内核_04

移植javac到android android 移植_Android_05

第四章

本章主要介绍的是如何从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目录,设置环境变量

移植javac到android android 移植_Android_06

下载安卓源代码

移植javac到android android 移植_Android_07

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

移植javac到android android 移植_Android_08

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