参考了官方文档和前辈们的编译经验,但还是遇到了不少坑,在这里记录一下过程。
官方文档地址:https://source.android.google.cn/source/downloading
下面写一下具体步骤:

1. 新建大小写敏感的磁盘映像

编译需要大小写敏感的环境,mac如果没有自行更改过磁盘格式默认是大小写不敏感的,所以要在mac上划分出一个大小写敏感的磁盘映像。前辈们建议150G,然而我编译后就剩几百M了,打开模拟器运行需要1.5G提示剩余空间不够T_T,所以建议更大一点160G应该可以了,如果是更高版本的源码建议更大。使用mac应用程序列表中的磁盘工具–>文件(左上角)–>新建映像–>空白映像,这里我创建了叫AOSP的盘

2.系统环境准备

JDK8:这个就不多说了,配好环境变量
Git:按照google的要求需要吧git邮箱设置google邮箱
GnuPG:加密工具,否则连初始化仓库都过不去,参考repo init报错1
XCode:默认自带的XcodeSDK版本过高,一定要下载一个旧版本的,否则编译时报错,参考最后编译报错1
xz解压工具:一定要有否则编译报错,参考最后编译报错2
VPN:最好有一个,主要下载repo用,源码文件比较大总共大概33G还是用镜像地址比较好

3.安装repo

1>确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
2>下载 Repo 工具,修改执行权限:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

4. 创建源码目录

进入到刚才创建的磁盘映像,创建WORKING_DIRECTORY源码目录,依次执行命令

$ cd /Volumes/AOSP
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

5. 初始化repo

这里就需要考虑网络的问题的,国内Google服务器,VPN网速一般又比较慢,很容易出现问题,所以建议直接用清华的镜像地址,否则此处可能会报错,参考repo报错1(注释掉的是google原地址)
如果要下载全部源代码:

// $ repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
$ repo init -u https://android.googlesource.com/platform/manifest

只下载某一分支代码:

// $ repo init -u https://android.googlesource.com/platform/manifest
$ repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-9.0.0_r33

建议只下载分支,仅9.0分支就有30多G
如果没有安装GnuPG,这里会报错warning: gpg (GnuPG) is not available,参考repo报错2

6.下载源码

$ repo sync

漫长的等待下载开始了,预计10M/s的网速预计需要一个半小时下载,好在repo同步时会检查是否已下载过,等于多了断点下载机制,不用担心下载中端,每次重新sync就行。这里如果出现错误,参考repo报错3

7.初始化编译环境

仍旧在下载源码目录下执行命令初始化编译环境

$ source build/envsetup.sh

选择要编译的cpu架构

$ lunch

然后会出现一个列表让选择,不知道怎么选直接按enter键,会自动选择一个默认的

8.编译源码

$ make -j30

数字30代表使用的线程数量,前辈们经验CPU并发线程数的1~2倍,我8核的30线程比第一次编译时18线程快了很多,又是漫长的等待预计1~2小时吧

看到这个画面就大功告成了

9.模拟器运行

$ emulator

试试能跑起来就ok。我没跑起来因为划分的150G提示空间不足,我只是需要源码,就没花时间再重试。

10.源码导入Android Studio

执行命令生成IntelJ工程文件

$ mmm development/tools/idegen/
$ . development/tools/idegen/idegen.sh

点击最后生成的android.ipr即可打开源码,如果这个文件没有倍AS识别,那就先打开AS通过open project的形式打开。

生成的源码目录非常大有140多G,最好把out(60多G)、cts、test等没什么用的文件夹删了,如果不需要再次编译把.repo(30多G)文件夹也删了要不然AS第一次打开会非常非常慢…

报错解决

repo报错

1. fatal: Cannot get https://gerrit.googlesource.com/git-repo

原因:墙的原因,使用镜像地址。
解决方法:找到刚才安装repo创建的bin目录,打开repo文件,修改REPO_URL链接

import os
REPO_URL = os.environ.get('REPO_URL', None)
if not REPO_URL:# REPO_URL = 'https://gerrit.googlesource.com/git-repo'REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'
REPO_REV = 'stable'
2. warning: gpg (GnuPG) is not available. warning: Installing it is strongly encouraged.

原因:未安装GnuPG
解决方法:
下载安装地址 https://www.gnupg.org/download/
注意:需要导入Google的公钥,要不然会报no public key

$ gpg --import

然后粘贴公钥

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

Control + D结束输入。导入完毕
如果是安装完毕第一次使用gpg命令会提示需要link到gunpg,按提示输入命令就行了

3. android error: RPC failed; curl 18 transfer closed with outstanding read data remaining fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed

原因:不要怀疑!不要相信网上说的是git缓存区太小问题等等!就是你的网不行,找个网速好的地儿重新repo sync代码!

编译报错:

1. Could not find a supported mac sdk: [“10.10” “10.11” “10.12”]

原因:mac支持编译的找不到sdk(xcode的sdk)
解决方法:下载提示版本的sdk解压到系统的sdk目录
别人收集的各版本sdk:https://github.com/phracker/MacOSX-SDKs/releases
Command+Shift+G进入到目录:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
把解压的sdk放到与系统自带的sdk平级

2. /bin/bash: xz: command not found

原因:未安装xz解压工具
解决方法:下载xz安装:http://tukaani.org/xz/
下载安装包后依次执行命令解压安装:
$ tar -zxf xz-5.2.3.tar.gz
$ cd xz-5.2.3
$ ./configure
$ make
$ make install
执行$ xz -V 验证安装是否成功(能看到版本号就ok)

编译Android源码(9.0)相关推荐

  1. linux3.10.46源码下载,Ubuntu11.10下编译android源码4.0.3

    1.初始化编译环境 软件需求: Python2.5-2.7,可以http://www.python.org/download/下载(Ubuntu11.10自带). JDK6:编译Gingerbread ...

  2. ubuntu 11.10下载和编译Android源码

    ubuntu 11.10下载和编译Android源码 由衷感谢网上的各个博主的文章,给了小弟我莫大的帮助.这里呢,小弟也把自己的经历记录下来,以供大家参考^^.这篇应该算是零基础.从无到有的流程介绍了 ...

  3. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

    Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决 参考文章: (1)Ubuntu12.04编译Android ...

  4. 《深入解析Android 虚拟机》——第1章,第1.3节编译Android源码

    本节书摘来自异步社区<深入解析Android 虚拟机>一书中的第1章,第1.3节编译Android源码,作者 钟世礼,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  5. android:自己动手编译Android源码(超详细)

    自己动手编译Android源码(超详细) 涅槃1992 2016.06.20 02:12* 字数 4330 阅读 86819评论 89喜欢 339赞赏 7 在Android Studio代码调试一文中 ...

  6. win10最新下载编译Android源码的简易方法分享(已亲测)

    win10最新下载编译Android源码的简易方法分享(已亲测) 准备至少150G的硬盘空间 win+R 输入control 打开程序与功能-启用或关闭Windows功能 勾选"适用于Lin ...

  7. ubuntu 20.04编译Android源码

    一直以来想编译android源码,趁闲编译了下,ubuntu版本:20.04,android源码版本:android-9.0.0_r30.总体还比较顺畅,中间遇到了一些报错,在文中也有记录,详情见下文 ...

  8. 最新i7编译android源码,编译ROC-RK3328-CC Android7.1源码教程

    环境安装 windows准备 首先在windows中划分一块100左右的分区安装ubuntu16,在linux环境编译Android源码 安装ubuntu16(注意一定要16的ubuntu,其他版本的 ...

  9. 编译android源码(小米 mix3内核)

    编译android源码(小米 mix3内核) 一.运行环境搭建 1.Ubuntu选择 在此文章中选择的是ubuntu14.04 2.Linux选择 在此文章中选择的是ubuntu14.04自带的lin ...

最新文章

  1. kindeditor上传图片的大小在哪控制
  2. pycharm全局修改
  3. 会员教程翻译:性能和时间
  4. 我的第一份工作 (2007.2.28--2008.2.28) 上海三高计算机中心有限公司
  5. TCP重组数据包分析
  6. Java学习笔记——反射
  7. 如何在Docker容器中运行GUI程序
  8. c语言学习-定义并调用函数求两个整数之差的绝对值
  9. HashMap在Jdk1.7和1.8中的实现
  10. 2019年最流行的50款开源软件
  11. Eurek自我保护机制
  12. python批量转换:未知类型二进制净生产力(NEP)遥感定量反演产品数据的打开,转换为tif,可用于通用GIS、遥感软件打开。
  13. irobot擦地机器人故障_不想跪下擦地板!iRobot新神器擦地机器人能否帮到你?
  14. call、aplay 和 bind 三者之间的区别?
  15. 某宁detect、feature参数分析
  16. DateTime类型的12小时制与24小时制
  17. 对Git暂存区的理解
  18. 锻造宝剑!如何用一款手机打造一个移动渗透工具箱??
  19. Kubernetes | 《Kubernetes in Action中文版》第8章错误
  20. Win10点击PowerShell显示找不到文件路径

热门文章

  1. 华为5g服务器硬件供应商,华为发布5G多模终端芯片和商用终端
  2. 双非本科小渣渣的字节跳动Android岗面试题分享(已拿offer,分享攒人品~)
  3. 简单方法解决火狐浏览器主页被篡改/挟持,主页变成垃圾网站的问题
  4. git拆分子目录作为新仓库并保留log记录
  5. 如何去理解虚拟机的概念?
  6. EBS查询某公司某科目的科目余额明细SQL
  7. BugkuCTF之misc题之图穷匕见
  8. 【pandas数据分析】pandas数据结构
  9. 杀狗问题(帽子问题)
  10. Linkage Mapper工具包:ArcGIS中打造连接分析利器的详细指南