超级简单的Android源码下载

方法一:根据官网教程下载

官网文档:https://source.android.com/source/downloading

下载方法文档已经写的很清楚了,源码会分为超级多个git库,所以谷歌搞了个叫 repo 的工具(windows可以试下用这个https://github.com/esrlabs/git-repo),可以集中下载管理,超级简单,但国外的东西通常都会有乱七八糟的问题出现,可以自己研究一下。

方法二:自己写脚本下载

第一步:拿到 git 的 clone url

  • 打开链接 https://android.googlesource.com/ ,可能需要翻墙(下面直接给出国内镜像链接),找到目录 platform/manifest ,点击进去,拿到 clone url ,如下图步骤,url为: git clone https://android.googlesource.com/platform/manifest

  • 如果你没有办法翻墙,直接使用这个
git clone git://mirrors.ustc.edu.cn/aosp/platform/manifest
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest

第二步:下载版本清单,找到你想要下载的版本

# 创建目录来存放源代码,建议100G以上
cd /f
mkdir android
cd android

# 下载版本清单
git clone git://mirrors.ustc.edu.cn/aosp/platform/manifest
# git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest

# 进入目录
cd manifest

# 列出版本清单
git tag

# 切换到想要下载的版本,比如我这里是 android-9.0.0_r42
git checkout android-9.0.0_r42

DYY

DYY

第三步:写下载脚本(文末有不写脚本的方法,直接下载自己需要的部分)

脚本用的是 python,自行下载安装python吧。
脚本前面几个配置成自己的目录就行了。
脚本比较简单,就是从清单里面读取git库,一个一个下载,可以自行优化。

# coding=utf-8

import xml.dom.minidom
import os

############### 需要配置 #######################
# 源码存储路径,替换成你自己的路径
DOWNLOAD_PATH = r"E:\android\android-9.0.0_r42"
# 清单文件路径
MANIFEST_PATH = r"E:\android\manifest\default.xml"

# GIT_PREFIX = "git clone --depth 1 https://android.googlesource.com/"
# GIT_PREFIX = "git clone --depth 1 https://aosp.tuna.tsinghua.edu.cn/"
GIT_PREFIX = "git clone --depth 1 git://mirrors.ustc.edu.cn/aosp/"
GIT_SUFFIX = ".git"
###############################################

# 新建目录
if not os.path.exists(DOWNLOAD_PATH):
    os.makedirs(DOWNLOAD_PATH)

root = xml.dom.minidom.parse(MANIFEST_PATH).documentElement
for project in root.getElementsByTagName("project"):
    path = project.getAttribute("path")
    name = project.getAttribute("name")

    os.chdir(DOWNLOAD_PATH)
    last = path.rfind("/")
    if last != -1:
        path = os.path.join(DOWNLOAD_PATH, path[:last])
        if not os.path.exists(path):
            os.makedirs(path)
        os.chdir(path)
    cmd = GIT_PREFIX + name + GIT_SUFFIX
    print(cmd)
    os.system(cmd)

注:关于--depth 1,表示只下载最新的一个提交信息,如果不加depth参数,则会下载整个历史提交记录,亲测单单一个小项目Settings,代码大概是80m,但是.git目录高达1.7G,如果不加depth,则会下载整个1.7G,如果加上,则不到100m。

第四步:运行脚本

我脚本文件名叫 download.py,运行 python download.py ,然后就是超级漫长的等待,反正我下载了一个通宵。。


方法三: 不写脚本,只下载自己需要的部分

比如我只是想看一下Launcher3这个应用的源码,我就没必要下载整个包括framework的源码吧,流量是其次,毕竟时间是宝贵,留点时间约妹纸吧。

1、在清单文件中找到Launcher3的部分,如下:

<project path="packages/apps/Launcher3" name="platform/packages/apps/Launcher3" groups="pdk-fs" />

2、构建clone的url,如下:

git clone --depth 1 git://mirrors.ustc.edu.cn/aosp/platform/packages/apps/Launcher3.git

3、创建管理目录,以便下载多了混乱,然后进入目录下载,如下:

// 这里是手写的,可能有错,大概意思就是创建目录,进入目录,下载,搞定。
mkdirs /AndroidSrc/android-9.0.0_r42/packages/apps/
cd /AndroidSrc/android-9.0.0_r42/packages/apps/
git clone --depth 1 git://mirrors.ustc.edu.cn/aosp/platform/packages/apps/Launcher3.git

4、秒下,收工!


参考文章:https://www.cnblogs.com/zhangtingkuo/p/4703142.html
推荐个在线源码:http://androidxref.com/

Android中的点击事件处理是通过View的触摸事件来实现的。当用户在屏幕上点击一个View时,Android系统会通过一系列的事件分发和处理机制来触发相应的点击事件回调。 具体来说,Android中点击事件的处理过程如下: 1. 用户点击屏幕,触摸事件被设备驱动程序捕获。 2. 设备驱动程序将触摸事件传递给Android系统。 3. Android系统通过事件分发机制将触摸事件传递给最顶层的ViewGroup,即Activity的根布局。 4. 顶层的ViewGroup通过遍历子View的方式将触摸事件传递给合适的子View。 5. 子View接收到触摸事件后,会调用自己的onTouchEvent()方法进行处理。 6. 如果子View的onTouchEvent()方法返回true,表示该子View已经消费了该触摸事件,不再向其他View传递。 7. 如果子View的onTouchEvent()方法返回false,表示该子View未消费该触摸事件,该触摸事件会继续向上传递给父View。 8. 如果所有的View都没有消费该触摸事件,最终会传递给Activity进行处理。 这是一个简化的点击事件处理流程,实际上还涉及到多点触控、滑动等更复杂的情况。Android系统的点击事件处理是基于触摸事件和View的事件分发机制来实现的,通过理解这个流程,我们可以更好地理解和定制点击事件的处理逻辑。如果你想深入了解相关的系统源码,可以查看Android的View和ViewGroup类的源码,以及相关的事件分发机制的实现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值