Android源码解析01:下载Android源码

  在Android源码中包含了很多的东西,如内嵌在Android系统中应用程序(如拍照、计算器、日历、拨号器等)的源代码;Android SDK带的各种工具(如adb、emulator等)的源代码;Android NDK的源代码;硬件抽象层HAL的源代码等等。

  《Android源码解析》系列博文将记录下我学习Android源码过程中的点点滴滴。

1.安装Git工具

  Android源代码采用了Git版本控制工具来进行管理。可以使用如下的命令在ubuntu操作系统上安装Git工具:

    root@ubuntu:~# apt-get install git-core gnupg

   安装过程中,遇到了【404 Not Found】的错误,如图1所示。

图1 【404 Not Found】错误

   原因是在http://us.archive.ubuntu.com/ubuntu/源上找不到Git软件资源。解决办法是换一个有效的源。具体方法如下:

   选择“Applications”菜单下的“Ubuntu Software Center”选项,在弹出的“Ubuntu Software Center”对话框中选择“Edit”菜单下的“Software Sources”选项,将弹出如图2所示的“Software Sources”对话框。

 图2 “Software Sources”对话框

   在如图2所示的“Software Sources”对话框中选择“Download from”中的“Other”选项。将弹出所图3所示的“Chose a Download Server”对话框。

 图3 “Chose a Download Server”对话框

   在如图3所示的“Choose a Download Server”对话框中选择“Select Best Server”,系统会自动寻找出最好的源来,最后点击“Choose Server”即可。

  更换了源之后,Git就可以顺利的安装了。

2.下载repo工具

  在下载Android源码之前,需要先下载一个repo工具,在这个工具中封装了用来下载Android源码所需要的git命令。

  repo工具的下载和安装方法如下:

  root@ubuntu:~# wget https://dl-ssl.google.com/dl/googlesource/git-repo/repo
  root@ubuntu:~# chmod a+x repo
  root@ubuntu:~# mv repo /bin/

   通过以上的操作,我们下载了repo工具,然后修改其权限为可执行,最后将repo工具放到了/bin目录下。

3.下载Android源代码

  现在,我们就可以新建一个空目录,用来放置下载好的Android源码了。这里,我的存放目录为:/home/menlsh/AndroidSrc。

  在AndroidSrc目录下执行如下的命令就可以开始下载Android源码了,这里我选择了下载Android4.0版本的源码。

  root@ubuntu:/home/menlsh/AndroidSrc# repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
  root@ubuntu:/home/menlsh/AndroidSrc# repo sync

   接下来,便是漫长的等待时间了。repo支持断点续存,所以如果在下载过程中碰到网络中断的现象,只需要重复执行repo sync命令就可以继续下载了。

  在下载过程中,AndroidSrc目录中是没有文件内容显示的。下载完成后,会出现如图4所示“done”信息提示。

 图4 下载完成

  同时,在AndroidSrc目录中可以看到如图5所示的Android源码目录结构。

 图5 Android源码目录结构

  至此,Android源码便算是下载完成了。

4.Android源码目录结构解析

  由图5可以看出,在Android源码目录中包含了很多的子目录,下面就来说说这些子目录所代表的含义。

  (1)abi:应用程序二进制接口(Application Binary Interface)

  (2)bionic:C/C++运行时库

  (3)bootable:用于Android装载和启动程序,包括bootloader和recovery等

  (4)build:用于编译Android源码以及建立system.img、ramdisk.img等文件的工具

  (5)cts:用于兼容性测试的工具

  (6)dalvik:Dalvik虚拟机的源代码

  (7)development:一些开发和测试工具

  (8)device:与设备相关的代码

  (9)docs:Android源代码项目相关的文档和工具

  (10)external:扩展工具的源代码

  (11)frameworks:Android框架层源代码(也就是Android SDK的源代码)

  (12)hardware:硬件层接口和库(HAL的源代码)

  (13)libcore:Java核心库

  (14)ndk:NDK的源代码

  (15)packages:与Android系统一起发布的应用程序的源代码(如拍照、计算器等)

  (16)prebuilt:Android在各种平台下编译之前要使用的工具

  (17)sdk:在开发环境中使用到的工具(如ddms、draw9patch等)

  (18)system:Android基本系统

  (19)Makefile:编译脚本

  在这些目录中,device、frameworks、hardware、packages将是我重点进行学习的对象,也将会是本系列博文的主要介绍内容。

作者:依旧淡然
邮箱:menlsh@163.com
本文版权归作者所有,未经作者同意,严禁转载及用作商业传播,否则将追究法律责任。
原文地址:https://www.cnblogs.com/menlsh/p/3134773.html