1.安装操作系统

安装操作系统 Ubuntu

ubuntu-16.04.6-desktop-amd64.iso

ubuntu-19.10-desktop-amd64.iso

Redhat CentOS 和 Fedora 不是 Android 源码官方推荐,请使用Ubuntu,PC机不要使用虚拟机,太慢

分硬盘分大一点500G 可以多编译几个Android

2.装Android编译环境依赖包

apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

3.清华园AOSP镜像站下repo

下载repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
cp  repo ~/bin/
chmod a+x ~/bin/repo

export一下

repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里或者/etc/profile /etc/profile.d/里,怎么方便看你喜好。

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

 如放在.bashrc里重启终端

4.下载代码

传统初始化方法:

//建立目录
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

//初始化
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

//初始化特定版本
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-6.0.1_r61

//同步源码树
repo sync

遇到错误,重新多 repo sync 几把即可

remote: Total 107366 (delta 0), reused 0 (delta 0)          
接收对象中: 100% (107366/107366), 5.78 GiB | 1.03 MiB/s, 完成.
处理 delta 中: 100% (73443/73443), 完成. 2.06 MiB/s      
Fetching projects:  66% (8/12) platform/prebuilts/ndk接收对象中:  79% (1848/2319remote: Total 2319 (delta 0), reused 0 (delta 0)        
接收对象中: 100% (2319/2319), 15.37 GiB | 3.15 MiB/s, 完成.
处理 delta 中: 100% (572/572), 完成.
Fetching projects:  75% (9/12), done.
remote: Counting objects: 79416, done.        
remote: Counting objects: 62283, done.        
remote: Counting objects: 111002, done.        8 MiB/s   
remote: Compressing objects: 100% (46/46), done.        
error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: 远端意外挂断了
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败
error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: 远端意外挂断了
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败
error: Cannot fetch platform/prebuilts/tools (UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 2578: ordinal not in range(128))
error: Cannot fetch platform/prebuilts/gradle-plugin (UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 47: ordinal not in range(128))
Exception in thread Thread-933:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/mnt/opt/android6/.repo/repo/subcmds/sync.py", line 305, in _FetchProjectList
success = self._FetchHelper(opt, project, *args, **kwargs)
File "/mnt/opt/android6/.repo/repo/subcmds/sync.py", line 351, in _FetchHelper
clone_filter=clone_filter)
File "/mnt/opt/android6/.repo/repo/project.py", line 1546, in Sync_NetworkHalf
clone_filter=clone_filter, retry_fetches=retry_fetches):
File "/mnt/opt/android6/.repo/repo/project.py", line 2559, in _RemoteFetch
print('%s:\n%s' % (self.name, gitcmd.stdout), file=sys.stderr)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 2578: ordinal not in range(128)
Exception in thread Thread-934:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/mnt/opt/android6/.repo/repo/subcmds/sync.py", line 305, in _FetchProjectList
success = self._FetchHelper(opt, project, *args, **kwargs)
File "/mnt/opt/android6/.repo/repo/subcmds/sync.py", line 351, in _FetchHelper
clone_filter=clone_filter)
File "/mnt/opt/android6/.repo/repo/project.py", line 1546, in Sync_NetworkHalf
clone_filter=clone_filter, retry_fetches=retry_fetches):
File "/mnt/opt/android6/.repo/repo/project.py", line 2559, in _RemoteFetch
print('%s:\n%s' % (self.name, gitcmd.stdout), file=sys.stderr)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 47: ordinal not in range(128)
remote: Total 79416 (delta 0), reused 0 (delta 0)         
接收对象中: 100% (79416/79416), 4.98 GiB | 1.83 MiB/s, 完成.
处理 delta 中: 100% (26719/26719), 完成.
Fetching projects:  33% (1/3), done.
remote: Counting objects: 62283, done.        
remote: Total 62283 (delta 0), reused 0 (delta 0)            
接收对象中: 100% (62283/62283), 3.22 GiB | 2.42 MiB/s, 完成.
处理 delta 中: 100% (15522/15522), 完成.
remote: Counting objects: 111002, done.        
remote: Compressing objects: 100% (46/46), done.        
error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: 远端意外挂断了
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败
Fetching projects:  50% (1/2) platform/prebuilts/gradle-pluginerror: Cannot fetch platform/prebuilts/tools (UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 2534: ordinal not in range(128))
Exception in thread Thread-939:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/mnt/opt/android6/.repo/repo/subcmds/sync.py", line 305, in _FetchProjectList
success = self._FetchHelper(opt, project, *args, **kwargs)
File "/mnt/opt/android6/.repo/repo/subcmds/sync.py", line 351, in _FetchHelper
clone_filter=clone_filter)
File "/mnt/opt/android6/.repo/repo/project.py", line 1546, in Sync_NetworkHalf
clone_filter=clone_filter, retry_fetches=retry_fetches):
File "/mnt/opt/android6/.repo/repo/project.py", line 2559, in _RemoteFetch
print('%s:\n%s' % (self.name, gitcmd.stdout), file=sys.stderr)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 2534: ordinal not in range(128)
Fetching projects:  50% (1/2), done.
remote: Counting objects: 111002, done.        
remote: Compressing objects: 100% (46/46), done.        
remote: Total 111002 (delta 22), reused 115 (delta 22)        
接收对象中: 100% (111002/111002), 26.75 GiB | 3.78 MiB/s, 完成.
处理 delta 中: 100% (49027/49027), 完成.
Fetching projects: 100% (1/1), done.
正在检出文件: 100% (2596/2596), 完成.
Checking out projects:   1% (5/454) platform/build正在检出文件:  12% (1226/9676)正在检出文件: 100% (9676/9676), 完成.
正在检出文件: 100% (5699/5699), 完成.
Checking out projects:   2% (10/454) platform/developers/docs正在检出文件:  91% 正在检出文件: 100% (4313/4313), 完成.
正在检出文件: 100% (11736/11736), 完成.
Checking out projects:  14% (64/454) platform/external/ceres-solver正在检出文件:正在检出文件: 100% (2101/2101), 完成.
正在检出文件: 100% (10613/10613), 完成.
Checking out projects:  15% (69/454) platform/external/cmockery正在检出文件:  11正在检出文件: 100% (2067/2067), 完成.
Checking out projects:  17% (78/454) platform/external/donuts正在检出文件:  39% 正在检出文件: 100% (1317/1317), 完成.
Checking out projects:  24% (109/454) platform/external/gtest正在检出文件:   9% 正在检出文件: 100% (7397/7397), 完成.
Checking out projects:  37% (168/454) platform/external/libxml2正在检出文件:  34正在检出文件: 100% (3493/3493), 完成.
Checking out projects:  38% (173/454) platform/external/lldb正在检出文件:   5% (正在检出文件: 100% (17133/17133), 完成.
Checking out projects:  39% (178/454) platform/external/marisa-trie正在检出文件:正在检出文件: 100% (4095/4095), 完成.
Checking out projects:  46% (209/454) platform/external/ppp正在检出文件:  97% (7正在检出文件: 100% (755/755), 完成.
Checking out projects:  48% (218/454) platform/external/selinux正在检出文件:  68正在检出文件: 100% (3504/3504), 完成.
Checking out projects:  52% (237/454) platform/external/tinyxml正在检出文件:  24正在检出文件: 100% (4367/4367), 完成.
Checking out projects:  55% (250/454) platform/external/xmp_toolkit正在检出文件:正在检出文件: 100% (26633/26633), 完成.
Checking out projects:  62% (282/454) platform/frameworks/opt/telephony正在检出正在检出文件: 100% (2436/2436), 完成.
Checking out projects:  82% (373/454) platform/packages/apps/QuickSearchBox正在正在检出文件: 100% (2106/2106), 完成.
Checking out projects:  84% (382/454) platform/packages/apps/TvSettings正在检出正在检出文件: 100% (3166/3166), 完成.
Checking out projects:  86% (391/454) platform/packages/providers/ContactsProvidChecking out projects:  87% (395/454) platform/packages/providers/TelephonyProviChecking out projects:  90% (409/454) platform/packages/wallpapers/NoiseField正正在检出文件: 100% (64/64), 完成.
Checking out projects:  91% (414/454) platform/prebuilts/clang/darwin-x86/host/3正在检出文件: 100% (742/742), 完成.
正在检出文件: 100% (263/263), 完成.
Checking out projects:  92% (418/454) platform/prebuilts/gcc/darwin-x86/aarch64/正在检出文件: 100% (205/205), 完成.件:  41% (86/205)   
正在检出文件: 100% (111/111), 完成.
正在检出文件: 100% (242/242), 完成.
Checking out projects:  93% (423/454) platform/prebuilts/gcc/darwin-x86/mips/mip正在检出文件: 100% (269/269), 完成.:   9% (25/269)   
正在检出文件: 100% (273/273), 完成.
正在检出文件: 100% (209/209), 完成.
Checking out projects:  94% (427/454) platform/prebuilts/gcc/linux-x86/arm/arm-l正在检出文件: 100% (3202/3202), 完成.% (1413/3202)   
正在检出文件: 100% (3539/3539), 完成.
正在检出文件: 100% (4198/4198), 完成.
正在检出文件: 100% (270/270), 完成.
Checking out projects:  95% (432/454) platform/prebuilts/gcc/linux-x86/x86/x86_6正在检出文件: 100% (11831/11831), 完成.2536/11831)   
正在检出文件: 100% (2518/2518), 完成.
正在检出文件: 100% (1697/1697), 完成.
Checking out projects:  96% (436/454) platform/prebuilts/misc正在检出文件:   9% 正在检出文件: 100% (72214/72214), 完成.
正在检出文件: 100% (3552/3552), 完成.
正在检出文件: 100% (52/52), 完成.
正在检出文件: 100% (1368/1368), 完成.
Checking out projects:  97% (441/454) platform/prebuilts/sdk正在检出文件:   2% (正在检出文件: 100% (3838/3838), 完成.
Checking out projects:  99% (450/454) platform/system/netd正在检出文件:  44% (8/正在检出文件: 100% (18/18), 完成.
Checking out projects: 100% (454/454), done.
error: Unable to fully sync the tree.
error: Downloading network changes failed.
error: Checking out local projects failed.
Try re-running with "-j1 --fail-fast" to exit at the first error.
root@mayaoyao-Precision-Tower-5810:/mnt/opt/android6# repo sync
repo: warning: Python 2 is no longer supported; Please upgrade to Python 3.6+.
... A new version of repo (2.8) is available.
... You should upgrade soon:
cp /mnt/opt/android6/.repo/repo/repo /usr/bin/repo
remote: Counting objects: 12, done.        
remote: Compressing objects: 100% (10/10), done.        
remote: Total 12 (delta 4), reused 0 (delta 0)        
Fetching projects:   2% (10/454) platform/external/google-fonts/carrois-gothic-sFetching projects:   5% (23/454) device/lge/hammerhead-kernelremote: Counting objects: 13, done.        
remote: Compressing objects: 100% (12/12), done.        
remote: Total 13 (delta 1), reused 7 (delta 1)        
Fetching projects:   6% (28/454) platform/artremote: Counting objects: 12, done.        
remote: Compressing objects: 100% (12/12), done.        
remote: Total 12 (delta 1), reused 9 (delta 0)        
Fetching projects:  15% (69/454) platform/packages/apps/Bluetoothremote: Counting objects: 94, done.        
remote: Compressing objects: 100% (94/94), done.        
remote: Total 94 (delta 35), reused 0 (delta 0)        
Fetching projects:  21% (96/454) platform/prebuilts/ndkremote: Counting objects: 7, done.        
remote: Compressing objects: 100% (7/7), done.        
remote: Total 7 (delta 4), reused 0 (delta 0)        
Fetching projects:  26% (119/454) platform/external/dhcpcdremote: Counting objects: 29, done.        
remote: Compressing objects: 100% (29/29), done.        
Fetching projects:  29% (132/454) platform/system/netdremote: Counting objects: 121, done.        
remote: Compressing objects: 100% (113/113), done.        
remote: Total 121 (delta 22), reused 23 (delta 6)        
接收对象中: 100% (121/121), 443.68 KiB | 827.00 KiB/s, 完成.
处理 delta 中: 100% (22/22), 完成.
Fetching projects:  30% (137/454) platform/external/webrtcremote: Counting objects: 14, done.        
remote: Compressing objects: 100% (13/13), done.        
remote: Total 14 (delta 3), reused 5 (delta 0)        
remote: Counting objects: 182, done.        
remote: Compressing objects: 100% (108/108), done.        
remote: Total 182 (delta 66), reused 121 (delta 46)        
接收对象中: 100% (182/182), 155.66 KiB | 714.00 KiB/s, 完成.
处理 delta 中: 100% (66/66), 完成.
remote: Total 29 (delta 24), reused 0 (delta 0)        
remote: Counting objects: 56044, done.        
remote: Compressing objects: 100% (12377/12377), done.        
Fetching projects:  31% (141/454) platform/frameworks/base接收对象中:  15% (8407remote: Counting objects: 16, done.        1.10 MiB/s    
remote: Compressing objects: 100% (16/16), done.        
remote: Total 16 (delta 11), reused 1 (delta 0)        
Fetching projects:  32% (146/454) platform/hardware/intel/common/wrs_omxil_coreFetching projects:  33% (150/454) platform/prebuilts/gcc/linux-x86/x86/x86_64-liFetching projects:  34% (155/454) platform/external/google-tv-pairing-protocol接Fetching projects:  35% (159/454) platform/hardware/broadcom/libbt接收对象中:  6Fetching projects:  36% (164/454) platform/external/nanopb-c接收对象中:  75% (42Fetching projects:  37% (168/454) platform/external/netcat接收对象中:  98% (5492remote: Total 56044 (delta 44349), reused 55329 (delta 43639)        
接收对象中: 100% (56044/56044), 16.61 MiB | 1.10 MiB/s, 完成.
remote: Counting objects: 16, done.        
remote: Compressing objects: 100% (12/12), done.        
remote: Total 16 (delta 5), reused 13 (delta 4)        
Fetching projects:  38% (173/454) device/generic/x86_64处理 delta 中:  63% (2837Fetching projects:  39% (178/454) platform/external/mp4parser处理 delta 中:  84%remote: Counting objects: 8, done.        
remote: Compressing objects: 100% (8/8), done.        
remote: Total 8 (delta 0), reused 7 (delta 0)        
处理 delta 中: 100% (44349/44349), 完成 389 个本地对象.
Fetching projects:  45% (205/454) platform/prebuilts/gcc/linux-x86/host/x86_64-wFetching projects:  48% (218/454) platform/hardware/qcom/sensorsremote: Counting objects: 15, done.        
remote: Compressing objects: 100% (15/15), done.        
remote: Total 15 (delta 13), reused 0 (delta 0)        
Fetching projects:  49% (223/454) platform/packages/providers/UserDictionaryProviderremote: Counting objects: 10, done.        
remote: Compressing objects: 100% (10/10), done.        
remote: Total 10 (delta 7), reused 0 (delta 0)        
Fetching projects:  57% (259/454) platform/system/mediaremote: Counting objects: 18, done.        
remote: Compressing objects: 100% (10/10), done.        
remote: Total 18 (delta 6), reused 0 (delta 0)        
Fetching projects:  59% (268/454) platform/hardware/broadcom/wlanremote: Counting objects: 57, done.        
remote: Compressing objects: 100% (57/57), done.        
remote: Total 57 (delta 38), reused 0 (delta 0)        
Fetching projects:  62% (282/454) platform/external/apache-harmonyremote: Counting objects: 7, done.        
remote: Compressing objects: 100% (5/5), done.        
remote: Total 7 (delta 2), reused 5 (delta 2)        
Fetching projects:  64% (291/454) platform/external/libpcapremote: Counting objects: 4, done.        
remote: Compressing objects: 100% (4/4), done.        
remote: Total 4 (delta 2), reused 0 (delta 0)        
Fetching projects:  67% (305/454) platform/external/oauthremote: Counting objects: 1216, done.        
remote: Compressing objects: 100% (689/689), done.        
remote: Total 1216 (delta 229), reused 1024 (delta 170)        
接收对象中: 100% (1216/1216), 713.19 KiB | 1.16 MiB/s, 完成.
处理 delta 中: 100% (229/229), 完成.
Fetching projects:  72% (327/454) platform/frameworks/opt/widgetremote: Counting objects: 57, done.        
remote: Compressing objects: 100% (57/57), done.        
remote: Total 57 (delta 44), reused 0 (delta 0)        
Fetching projects:  77% (350/454) platform/bionicremote: Counting objects: 586, done.        
remote: Compressing objects: 100% (272/272), done.        
Fetching projects:  78% (355/454) platform/packages/apps/CarrierConfigremote: Counting objects: 598, done.        
remote: Compressing objects: 100% (269/269), done.        
remote: Total 598 (delta 496), reused 430 (delta 329)        
接收对象中: 100% (598/598), 97.74 KiB | 1.21 MiB/s, 完成.
处理 delta 中: 100% (496/496), 完成 105 个本地对象./s   
Fetching projects:  79% (359/454) platform/prebuilts/gcc/linux-x86/arm/arm-eabi-remote: Total 586 (delta 360), reused 410 (delta 310)        
接收对象中: 100% (586/586), 1.34 MiB | 743.00 KiB/s, 完成.
处理 delta 中: 100% (360/360), 完成.
Fetching projects:  81% (368/454) platform/developers/samples/androidremote: Counting objects: 4, done.        
remote: Compressing objects: 100% (4/4), done.        
remote: Total 4 (delta 3), reused 0 (delta 0)        
Fetching projects:  88% (400/454) platform/packages/apps/CellBroadcastReceiverremote: Counting objects: 12, done.        
remote: Compressing objects: 100% (12/12), done.        
remote: Total 12 (delta 10), reused 0 (delta 0)        
Fetching projects:  89% (405/454) platform/packages/apps/CertInstallerremote: Counting objects: 437, done.        
remote: Compressing objects: 100% (404/404), done.        
remote: Total 437 (delta 23), reused 418 (delta 15)        
接收对象中: 100% (437/437), 150.28 KiB | 57.00 KiB/s, 完成.
处理 delta 中: 100% (23/23), 完成.
Fetching projects:  96% (436/454) platform/external/pcreremote: Counting objects: 43, done.        
remote: Compressing objects: 100% (38/38), done.        
remote: Total 43 (delta 17), reused 5 (delta 0)        
Fetching projects:  98% (445/454) device/sampleremote: Counting objects: 10, done.        
remote: Compressing objects: 100% (10/10), done.        
remote: Total 10 (delta 1), reused 0 (delta 0)        
Fetching projects: 100% (454/454), done.
Checking out projects:  86% (391/454) platform/packages/providers/ContactsProvidChecking out projects:  87% (395/454) platform/packages/providers/TelephonyProviChecking out projects:  91% (414/454) platform/prebuilts/clang/darwin-x86/host/3Checking out projects:  92% (418/454) platform/prebuilts/gcc/darwin-x86/aarch64/Checking out projects:  93% (423/454) platform/prebuilts/gcc/darwin-x86/mips/mipChecking out projects:  94% (427/454) platform/prebuilts/gcc/linux-x86/arm/arm-lChecking out projects:  95% (432/454) platform/prebuilts/gcc/linux-x86/x86/x86_6Checking out projects: 100% (454/454), done.
repo sync has finished successfully.
root@mayaoyao-Precision-Tower-5810:/mnt/opt/android6# repo sync
repo: warning: Python 2 is no longer supported; Please upgrade to Python 3.6+.
... A new version of repo (2.8) is available.
... You should upgrade soon:
cp /mnt/opt/android6/.repo/repo/repo /usr/bin/repo
Fetching projects:  37% (168/454) platform/packages/providers/PartnerBookmarksPrFetching projects:  45% (205/454) platform/prebuilts/gcc/linux-x86/host/x86_64-wFetching projects: 100% (454/454) platform/prebuilts/gcc/darwin-x86/host/i686-apFetching projects: 100% (454/454), done.
Checking out projects:  86% (391/454) platform/packages/providers/ContactsProvidChecking out projects:  87% (395/454) platform/packages/providers/TelephonyProviChecking out projects:  91% (414/454) platform/prebuilts/clang/darwin-x86/host/3Checking out projects:  92% (418/454) platform/prebuilts/gcc/darwin-x86/aarch64/Checking out projects:  93% (423/454) platform/prebuilts/gcc/darwin-x86/mips/mipChecking out projects:  94% (427/454) platform/prebuilts/gcc/linux-x86/arm/arm-lChecking out projects:  95% (432/454) platform/prebuilts/gcc/linux-x86/x86/x86_6Checking out projects: 100% (454/454), done.
repo sync has finished successfully.
root@mayaoyao-Precision-Tower-5810:/mnt/opt/android6# 

Android 源码大约120 -150G 耐心等待即可

root@mayaoyao-Precision-Tower-5810:/mnt/opt# du -sh *
121G	android6
1.6G	ubuntu-16.04.6-desktop-amd64.iso
2.3G	ubuntu-19.10-desktop-amd64.iso
root@mayaoyao-Precision-Tower-5810:/mnt/opt# 

下载以后的Android源码编译之前备份一把,以免编坏了重新撸代码

root@mayaoyao-Precision-Tower-5810:/mnt/opt# du -sh *
121G	android6
1.6G	ubuntu-16.04.6-desktop-amd64.iso
2.3G	ubuntu-19.10-desktop-amd64.iso
root@mayaoyao-Precision-Tower-5810:/mnt/opt# 

 安装OpenJDK

apt-get install openjdk-13-jdk

5.编译

本文地址:https://blog.csdn.net/weixin_41557838/article/details/108128018