博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android源码解析01:下载Android源码
阅读量:4313 次
发布时间:2019-06-06

本文共 2497 字,大约阅读时间需要 8 分钟。

  在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】错误

   原因是在源上找不到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将是我重点进行学习的对象,也将会是本系列博文的主要介绍内容。

 

 

转载于:https://www.cnblogs.com/menlsh/archive/2013/06/13/3134773.html

你可能感兴趣的文章
InnoDB为什么要使用auto_Increment
查看>>
课堂练习之买书打折最便宜
查看>>
定义函数
查看>>
网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
查看>>
MQTT协议笔记之mqtt.io项目HTTP协议支持
查看>>
(转)jQuery中append(),prepend()与after(),before()的区别
查看>>
Tecplot: Legend和图像中 Dashed/Dash dot/Long dash 等虚线显示没有区别的问题
查看>>
win8 开发之旅(2) --连连看游戏开发 项目错误的总结
查看>>
视频转换工具ffmpeg
查看>>
一、 object c -基础学习第一天 如何定义一个类
查看>>
C#调用C++编译的DLL详解
查看>>
Kali Linux的安装
查看>>
我的大学生活-5-08-赵心宁
查看>>
SQLServer视图
查看>>
入门阶段
查看>>
Android中使用http协议访问网络
查看>>
vs win32 & MFC 指针默认位置
查看>>
Join 与 CountDownLatch 之间的区别
查看>>
js存cookie
查看>>
vc6下dll调试
查看>>