这是真正的教大家怎样在Windows下成功的下载完整的Android源码,建议大家完整的看完一次再操作,因为最后那里会有一些注意事项,这样可以减少你走弯路
一直以来,要想在Windows里面下载Android的源码,都是一件非常糟心的事情,吃力不讨好。能成功的方法大概有下面的几种
- 安装cygwin,这样子来获取到一个Linux的环境,这样子来下载
- 自己修改repo,使其能在Windows下能运行好,网上也有人修改过
- 自己写一个脚本,然后通过git一个一个的项目clone下来
- 装个虚拟机,然后虚拟面里面装个Linux
上面几种方法对应的缺点是
- cygwin的安装非常的麻烦,不是才司机,很难知道要安装那些包,全装的话,占用空间非常的大,几个G少不了
- 非常的不稳定,会出乱七八糟的问题
- 非常的烦琐,而且还要写上对应的更新脚本,容易clone少一些项目
- 非常的占用资源
所以除了常年使用Linux开发的大佬,很少会专门装个Linux系统来下载源码,就算装了系统来下载,由于大量的熟悉的工具在Windows,使用起源码来也会事半功倍。Mac大佬也很少会用下载,因为完整的源码起码100G到200G,Mac的空间小,占用那么多,受不了。
但现在,一个好方法来了,那就是在Window10上面使用WSL
,适用于Linux的Windows子系统。可以把它理解成运行在Windows上的一个Linux内核。有点像cygwin,但这个是微软自己支持的,亲儿子,运行起来的内存占用这些,肯定有保障,兼容性也是没问题的。
但是,它是需要在Windows10上运行的,所以最好把系统升级到最新。官方文档
那么就进入正题,首先安装wsl,按win键,输入powershell,然后右键,以管理员身份运行
然后输入Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
然后按提示操作,会有个确认的环节,输入y就好。然后就会重启了
重启完成之后,想知道是否安装成功,那就可以在命令行里面输入wsl
,出现下面的提示就是成功了
成功安装wsl之后呢,我们就需要安装一个Linux的子系统了,这个更简单,只需要去Microsoft Store那里安装就好了,直接搜索Ubuntu
(也有其他版本的Linux,自己按需搜索),然后选择你想安装的版本,然后安装
我这里安装的是18的LTS
注意
有些人的Windows版本是没有Microsoft Store的,例如企业版,所以下面的教程就是教那些人怎样安装Microsoft Store,有的人,可以跳过
打开网址 https://store.rg-adguard.net/
以PackageFamilyName方式搜索Microsoft.WindowsStore_8wekyb3d8bbwe,根据系统选择对应的包(每类种选择一个)都要下载,自己看清楚对应版本(我的是64位的系统,所以就下载64的)!不清楚的可以看下面的图。
下载到本地,放到同一个文件夹里面
然后以管理员的方式,打开PowerShell,不会的,看前面,然后输入命令
Add-AppxPackage *
等安装完成之后,就可以看到Microsoft Store了。这样就可以安装Ubuntu了
回到我们的主线
安装好Ubuntu之后呢,我们就需要启动它,按Win键,然后找到它,就可以启动了
第一次启动会慢一点,耐心等候,下次就秒开了,还有就是第一次需要设置用户名和密码,用户名是要小写的,不然会提示不符合命名规范
就这样,你的环境就安装好了,但我推荐再安装一个Windows Terminal,可以支持分屏等一系列操作的终端,当然不装也可以,但用过的就知道有多香了。同样是在Microsoft Store里面安装就好了
下面就可以正式的进入Android源码下载的步骤了
首先,我们需要给我们的Ubuntu系统更换源,如果不更换,安装软件就会慢,甚至不成功。我们先去到我们刚刚启动的Ubuntu
然后去到指定目录 cd /etc/apt
然后备份一下原来的源文件 sudo cp sources.list sources.list.bak
记住,一定要需要用sudo的,密码就是刚刚初始化Ubuntu时,你输入的密码
然后,我们就打开源文件,进行编辑 sudo vim sources.list
这时就进入了vim的编辑模式了,如果不会vim的同学,建议去简单的学一下,想玩一下Linux,这个是必备基础
注意,这时,我们输入 d
然后,再输入G
一定要区分大小写,不然就没办法达到效果了。想知道自己是不是进行了有效的输入,盯着右下角看,而不是光标
然后,我们就会把原来里面的内容都删掉了
然后,我们把下面的文字复制一下
# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
然后回到我们的Ubuntu那里,然后按 p
然后再输入 :wq
然后Enter就可以了
更换了源之后,我们还需要在Ununtu的命令行里面输入 sudo apt-get update
更新一下源信息。然后就可以安装python了,记住,一定是要安装python2.7
sudo apt-get install python2.7
按提示操作,确认好之后,等一下,安装好之后,关键的步骤来了,我们需要把python命令软链接到2.7
cd /usr/bin
sudo ln -s python2.7 python
然后正常情况下,输入python
命令,会显示下面的,就正常了
最后,就可以按照官方文档来进行下载源码了,我把必要的步骤说一下。有个前提,你需要把自己的Git安装好,配置了,如果没用过,自己去学习一下
第一步, 新建一个文件夹,用来保存源码的,我这里就新建了Android的目录,然后进入到这个目录下面,输入下面的命令
curl https://storage.googleapis.com/git-repo-downloads/repo > ./repo
chmod a+x ./repo
./repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r35
./repo sync
这样就会开始下载源码了,这里有个需要注意的,上面的android-11.0.0_r35是你自己需要下载的分支的名字,如果想知道有什么分支的话,可以按下面的来执行
curl https://storage.googleapis.com/git-repo-downloads/repo > ./repo
chmod a+x ./repo
./repo init -u https://android.googlesource.com/platform/manifest
cd .repo/manifest
git branch -a
./repo init -u https://android.googlesource.com/platform/manifest -b 自己选好的分支
./repo sync
最后,重要提醒,Android的源码非常的大,会占到100到200G,所以一定要有足够的空间,不然到时下载到一半就,瞎折腾了。我的G盘只有Android源码,占用了140G左右
异常情况
如果报错了,多运行几次 ./repo sync
命令
路径问题,例如我们的E盘,是对应Ubuntu的 /mnt/e/目录,G盘就是 /mnt/g/
error: .repo/repo/: contains uncommitted changes 错误
去到报错的目录,然后就执行命令
git stash
git clean -f -d
this operation must be run in a work tree error: Cannot checkout platform/hardware/qcom/keymaster
试多几次,如果还不行,那就去.repo/project-objects和projects里面删掉对应的项目
网络问题,对于不能翻墙,或者经常下载失败的伙伴,可以试着切换源,切换方式,打开.repo/manifests.git/config
文件,然后把里面的
url = https://android.googlesource.com/platform/manifest
更换为
url = https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
好了,写到这里,就基本已经可以下载好完整的Android源码了,放张图给大家看看
第一个框的就是./repo init
后生成的,中间的框是源码,如果我们要备份,或者发给别人,就可以把那个框里面的压缩就好了,千万不要把.repo目录也弄进去,里面有很多数据的,超级大的,可以看到我自己压缩后的Android.7z就只有18G而已。强烈建议大家都备份一下,免得以后编译的时候编坏了文件
好了,上面就是完整的教程了,至于编译问题,我这里就不编译了,因为我暂时还不需要编译。但有wsl这个环境,相信编译也不会有什么问题。如果到了我需要编译的时候,有很多坑的话,我就再写一编文章来教大家怎样编译。
最后,谢谢支持!