怎样着手研究 Android 源代码

 我来答
厦门侯
高粉答主

2016-01-18 · 信息管理员
厦门侯
采纳数:30618 获赞数:90294

向TA提问 私信TA
展开全部
一、源码里的工程需要导入所有的Android源码,不可以单独作为一个Android工程导入到Eclipse里。
二、使用git和repo下载Android的源代码,参考如下步骤
以下操作都是在Ubuntu10.04LTS下完成:
1)安装git
sudo apt-get install git-core
2)安装curl
sudo apt-get install git-core curl
3)安装Repo,为了方便直接下载repo到用户根目录中。通过curl下载repo
curl http://android.git.kernel.org/repo >~/repo
4)给repo可执行的权限
chmod a+x ~/repo
5)新建一个目录,然后进入该目录。通过repo将当前Android上所有源代码下载。
首先初始化本地,
~/repo init -u git://android.git.kernel.org/platform/manifest.git
看到repo initialized in /android的提示后,则证明初始化完毕。成功后会在~/android下生成.repo文件夹
执行
repo sync
则自动开始下载源代码。git支持断点续传,如果中断了下次可继续。
单独下载内核,用这个
git clone git://android.git.kernel.org/kernel/linux-2.6.git
如果想拿某个branch而不是主线上的代码,我们需要用-b参数制定branch名字,比如:
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
另一种情况是,我们只需要某一个project的代码,比如kernel/common,就不需要repo了,直接用Git即可。
git clone git://android.git.kernel.org/kernel/common.git
徐小小天
2015-03-06 · TA获得超过1453个赞
知道小有建树答主
回答量:839
采纳率:83%
帮助的人:756万
展开全部
不需要全部了解,阅读你感兴趣或者与你工作相关的部分就可以了。比如:

顶层目录:
.
|– bionic (bionic库,Android的基础库)
|– bootable (bootloader, recovery等,ROM移植相关)
|– build (编译和配置所需的脚本和工具)
|– dalvik (dalvik的Java虚拟机)
|– development (开发应用程序所需的模板和工具)
|– external (由其他平台移植过来的项目,对于移植工作是非常好的参考)
|– frameworks (应用程序框架层,请仔细阅读此部分代码,对于开发App会有很大帮助)
|– hardware (与硬件相关的库,驱动开发相关)
|– kernel (linux内核)
|– out (编译后生成的目录,包含构建文件系统所需的文件)
|– packages (Android的原生应用程序,App开发者需要重点关注)
|– prebuilt (Android在各平台下编译的预置脚本)
|– system (Android的底层库)
`– vendor / device (设备相关的代码,AOSP里不会有太多涉及,但是CM中却是重点)

external目录:
.
|– aes (ASE加密)
|– apache-http (网页服务器)
|– bison (自动生成语法分析器,将无关文法转换为C,C++)
|– bluez (Linux下的蓝牙工具)
|– bsdiff (diff工具)
|– bzip2 (压缩工具)
|– clearsilver (html模板系统)
|– dbus (低延时,低开销,高可用性的IPC机制)
|– dhcpcd (DHCP服务)
|– dosfstools (DOS文件系统工具)
|– dropbear (SSH2的服务器/客户端)
|– e2fsprogs (EXT2文件系统工具)
|– elfcopy (ELF复制工具)
|– elfutils (ELF工具)
|– embunit
|– emma (Java代码覆盖率统计工具)
|– esd (将多种音频流混合在一个设备上播放)
|– expat
|– fdlibm
|– freetype (字体)
|– gdata (google的无线数据)
|– genext2fs
|– giflib (gif库)
|– googleclient (google用户库)
|– grub
|– icu4c
|– iptables (防火墙)
|– jdiff
|– jhead (jpeg头部信息工具)
|– jpeg (jpeg库)
|– libffi
|– libpcap (网络数据包捕获函数)
|– libpng (png库)
|– libxml2 (xml解析库)
|– netperf (网络性能测试工具)
|– opencore (多媒体框架,最让人诟病的模块,Andoird 4.0中已被 stagefright 取代)
|– openssl (SSL模块,需要注意的是一定要静态编译此模块,否则会出现兼容问题)
|– qemu (Android 模拟器,Android 4.0之前只支持 arm-eabi,现在已支持 arm-v7)
|– skia (SKIA图像引擎)
|– sqlite (数据库)
|– strace (调试跟踪工具)
|– tcpdump (TCP抓包软件)
|– webkit (浏览器核心)
|– wpa_supplicant (无线网卡管理)
|– yaffs2 (yaffs文件系统)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式