Android拓展系列--Android源码下载

2023-10-27

1.安装git和curl命令:
$sudo apt-get install git-core curl

说明:
curl是一个向服务器或从服务器传输数据的工具,它支持HTTP 、HTTPS、FTP 、 FTPS 、 SCP、SFTP、TFTP、DICT、TELNET、LDAP或FILE等协议。对于web开发人员来说,它对HTTPPOST的支持为我们提供了很大的帮助。

git是分布式的版本控制系统,在这里负责把远程版本库的源代码clone下来。

2. 安装repo
命令:

?
1
2
3
4
5
6
7
$mkdir bin
//下载repo脚本到本地bin文件夹下
$curl http: //android.git.kernel.org/repo >~/bin/repo
//设置本地repo的可执行权限
$chmod a+x ~/bin/repo
//临时把repo添加到环境变量中,方便后面执行。
$export PATH=~/bin:$PATH

说明:
repo是一个基于git的版本库管理工具,可以简化android开发中使git的使用。在这里,使用repo和官方提供的android project列表自动批量下载android整个项目,免去了大量下载各个项目的手动工作量。

3.初始化repo客户端
命令:

?
1
2
3
4
5
6
//创建目录android/android-source来存放下载的源码
$mkdir android/android-source -p
//进入目录
$cd android/android-source
//获取项目列表并且初始化目录
$repo init -u git: //android.git.kernel.org/platform/manifest.git

初始化完成后会显示repo initialized in /home/http://www.cnblogs.com/xx,如下图:

4.同步版本库
命令:

?
1
$repo sync

说白了,就是从服务器上下载最新的代码。
接下来就是漫长的等待,本人10M带宽,依然下载了几个小时。忘记截图了,就不贴了。

5.下载单个项目的源码
前面我们把android整个项目都下载下来了 ,包括虚拟机,SDK,NDK等,但是对于相当多的应用开发者来说,只需要下载android sdk源代码就足够了,没必要下载3个多G的全部源码。
所以,我们以SDK源码为例子,演示如何使用git下载单个项目工程(下载单个项目不需要repo工具)。
打开网页http://android.git.kernel.org/,包含大量的android相关的工程。
android SDK的代码包括在android核心框架中。工程路径为platform/frameworks/base.git。
命令:

?
1
2
3
4
//进入之前建立的android目录
$cd android
//克隆服务器端的base的版本库和代码到android-sdk-source目录下
$git clone git: //android.git.kernel.org/platform/frameworks/base.git android-sdk-source

等待一会儿,大概200M,下载完成后,如下图。

类似的,你可以下载任何其他的单个项目到本地。

6.获取各个版本SDK源码
关于获取各个版本的SDK源码,网上还是身边经常有人急需阿,跪求阿什么的,今天我在这里抛砖引玉,演示一下方法,但是不提供下载,毕竟文件还是有一定的大小的。
首先我们现获取SDK的各版本的标志,有两种方式:1.通过分支branch;2.通过标签tag。
我们先看看结果:

?
1
2
3
4
5
6
//进入base版本库目录
$cd android-sdk-source
//显示所有的分支,包括远程和本地分支,我们没有建立分支,所有没有本地分支
$git branch -a
//显示所有标签
$git tag

分别如下面二图:


图A git branch -a

图B git tag

从上面两张图中我们可以看到各个分支号和标签号,这是我们切换分支和检出标签的基础。关于两者的区别,如果你只是下载的话,大家暂时不需要知道,branch是可以提交修改的,tag则只是作一个重要的标记,但是不能再修改标签对应的代码了。
大家都知道android在2.3中开始添加了NFC,所以源代码中也会增加NFC目录,我们以此为基础,切换到2.3之前和之后的分支,比较一下。
我们使用git checkout (branch)命令来检出分支,我们分别检出2.2和2.3版本的分支(同一目录下切换):

得到的结果分别是:

图A froyo版本(android2.2)

图Bgingerbread版本(2.3版本,姜饼)

对比图A和图B,我们发现图B多了一个nfc目录,说明我们切换到了2.3版本。
检出标签也是一模一样的,比如git checkandroid-sdk-2.1_r1
通过切换不同的分支,我们可以获取所有不同版本的SDK源代码,切换的速度还是很快的。

7.链接android.jar源码
一般我们都喜欢下载各个版本的sdk源码,分别存放在各个版本的sources目录下,以便eclipse方法中android.jar对应链接。这种方法我就不多介绍。
今天,我介绍另外一种方法让我们只需要一个简单的命令就能方便的切换源代码,呵呵,你是不是想到了,没错,就是使用前面的checkout命令切换。
在工程的android.jar右键attach source,选择前面的android-sdk-source文件夹,

链接完来后,就可查看SDK源代码了,如果版本不一致,我们只需要在android-sdk-source目录下执行git checkout branchname切换到相应的版本就OK了,再也不用找各个版本的源代码了。
当然,两种方法各有长短,觉得哪种方便就用哪种好了,本人是linux环境,所以我选择后一种会更好。

8.小结
源码下下来就是一笔财富,坚持查看源代码,分析其中的底层实现和框架模式,都绝对是极佳的学习经历,一定大有益处。
后面有机会我可能会为大家分析下android源码的架构层次,编译自己的android系统,如何深度定制android等等,这个看时间安排和具体情况。
不过有一个是可以肯定的,我在后面会单独开一个专题来剖析android源码:1.用源码来解说常见的东西;2.设计模式,敬请期待!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android拓展系列--Android源码下载 的相关文章

随机推荐

  • 内容管理系统测试实战

    使用django和restframework开发接口 使用postman测试接口 使用unittest和requests模块测试接口 目录 Django安装 Django Rest Framework 创建API应用 数据库迁移 创建超级管
  • C++11中pair的用法

    概述 pair可以将两个数据组合成一种数据类型 C 标准库中凡是必须返回两个值的函数都使用pair pair有两个成员变量 分别是first和second 由于使用的struct而不是class 因此可以直接访问pair的成员变量 基本用法
  • Python_某宝某东秒杀抢购

    纯学习分享 只用于学习用途 请勿用于任何商业用途 本人不承担任何责任 视频编写过程 某宝秒杀程序 某宝源码 from selenium import webdriver from selenium webdriver common by i
  • springboot配置shiro多项目实现session共享的详细步骤

    springboot配置shiro多项目实现session共享的详细步骤 项目的配置步骤我已写到另一篇文章中 shiro框架 多项目登录访问共享session的实现 springboot redis shiro 的实现项目已共享到GitHu
  • 关于Tomcat端口被占用的情况

    今天打开eclipse突然发现运行不了 报错的提示为 Several ports 8005 8080 8009 required by Tomcat v7 0 Server at localhost are already in use 有
  • Android studio遇到问题:Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT

    前言 在使用android studio时 配置模拟器的时候一直在报错这个 然后网上找到问题 并实际解决了问题 在这里记录下 目录 问题原因 没有配置环境的情况下 是因为他默认找的是这个路径的AVD 问题很明显了 中文路径导致的 C Use
  • Vue路由 传参几种方式

    动态路由传参 path detail username name a component gt import components Detail vue
  • windows server 2012 安装gooderp

    概述 这是我安装的第一个erp系统 为什么选择gooderp 因为它是开源的 个人认为还是不错的一个erp系统 windows上安装完全是傻瓜式的安装 介绍下环境 我使用的是阿里云的windows server 2012 为了安全呢最好更新
  • 前端浏览器常见兼容性问题及解决方案

    目录 1 最常见的 每个浏览器的默认margin padding大小都不同 当设置定位时会有些许差异 2 图片默认有间距 当几个img标签放到一起时 有些浏览器会有默认间距 加上第一条的设置的通配符样式也无用 3 min height问题
  • mc服务器查看死亡位置,我的世界查询死亡地点指令

    发布时间 2016 06 01 很多朋友在玩我的世界这款游戏时总会有各种意外死亡发生 今天蚕豆网小编带给大家的是我的世界死亡后怎么才能使东西不掉落的方法 游戏中的设定死亡后 你身上的物品会掉落在地上 需要快速的捡回 要不然东西就会消失 那么
  • goto语句在工作当中的用法

    前言 goto语句在C语言编程中是比较少用的 在学习C语言时老师也告诉要少用 有的甚至说别用 后来再工作当中 看到了前辈写的代码里用了goto语句 顿时感到goto语句的精妙 遂在此记录 goto语句能使用 不过要慎用 应为C语言的代码中大
  • 爬虫:json()数据解析(Request Method:GET)

    有一些网页会直接把所有的关键信息都放在HTML中请求 尤其是一些比较老 或比较轻量 的网站 我们用requests和BeautifulSoup就能解决它们 比如豆瓣 而有些数据请求则通过Fetch XHR传送 这些数据并不能直接在HTML页
  • Git 常用命令大全

    一 Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch a 查看所有的分支git branch r 查看远程所有分支git commit am i
  • openssl RSA基本加密解密

    include
  • 【计算机毕业文章】垃圾分类系统设计与实现

    毕业论文 题目 垃圾分类系统 目 录 摘 要 1 前 言 3 第1章 概述 4 1 1 研究背景 4 1 2 研究目的 4 1 3 研究内容 4 第二章 开发技术介绍 5 2 1Java技术 6 2 2 Mysql数据库 6 2 3 B S
  • Intellij IDEA 安装jnetpcap开发环境与 no jnetpcap in java.library.path 的解决方案

    jnetpcap是libpcap的一个java完整封装 这篇博客就是讲解如何能够使用Intellij IDEA来编写jnetpcap 这篇博客分为四个部分 安装必要的开发环境 添加jnetpcap的jar包 测试导入包 解决java lan
  • 如何解决Python中的RuntimeWarning: invalid value encountered in double_scalars问题

    在写代码计算类皮尔森相关系数的计算时遇到如下警告 RuntimeWarning invalid value encountered in double scalars 相关的代码段如下 在下面的语句的执行过程中出现上述提示 id col t
  • Android 欢迎界面停留3秒后进入登陆页面,输入登陆信息跳转到空白页面接收展示登陆页面内容

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 文章目录 一 项目准备 二 使用步骤 第一个页面 MainActivity java代码如下 示例 activity main xml布局文件代码如下 第二个页面 In
  • 入门级题解2:394. 字符串解码

    知识点总结 这里的字符串中s i 是数字时转为数字用的是 s i 0 asic码来转化 不用stoi那个 多个数位的情况23 abb int val 0很重要 这样就第一个数位是个位的情况也能直接用 if true isdigit s i
  • Android拓展系列--Android源码下载

    1 安装git和curl命令 sudo apt get install git core curl 说明 curl是一个向服务器或从服务器传输数据的工具 它支持HTTP HTTPS FTP FTPS SCP SFTP TFTP DICT T