zoukankan      html  css  js  c++  java
  • 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
    本文版权归作者所有,未经作者同意,严禁转载及用作商业传播,否则将追究法律责任。
  • 相关阅读:
    内存溢出和内存泄漏的区别
    各种集合类的区别以及原理
    如何设置java虚拟机参数
    [机器学习] 简单的机器学习算法和sklearn实现
    [机器视觉] SIFT特征-尺度不变特征理解
    [学习笔记] Markdown语法备忘
    [学习总结] python语言学习总结 (三)
    [学习笔记]Linux下mysql的基础操作
    [学习笔记] C++ 历年试题解析(三)--小补充
    [学习总结] python语言学习总结 (二)
  • 原文地址:https://www.cnblogs.com/menlsh/p/3134773.html
Copyright © 2011-2022 走看看