赞
踩
参考了官方文档和前辈们的编译经验,但还是遇到了不少坑,在这里记录一下过程。
官方文档地址:https://source.android.google.cn/source/downloading
下面写一下具体步骤:
编译需要大小写敏感的环境,mac如果没有自行更改过磁盘格式默认是大小写不敏感的,所以要在mac上划分出一个大小写敏感的磁盘映像。前辈们建议150G,然而我编译后就剩几百M了,打开模拟器运行需要1.5G提示剩余空间不够T_T,所以建议更大一点160G应该可以了,如果是更高版本的源码建议更大。使用mac应用程序列表中的磁盘工具–>文件(左上角)–>新建映像–>空白映像,这里我创建了叫AOSP的盘
JDK8:这个就不多说了,配好环境变量
Git:按照google的要求需要吧git邮箱设置google邮箱
GnuPG:加密工具,否则连初始化仓库都过不去,参考repo init报错1
XCode:默认自带的XcodeSDK版本过高,一定要下载一个旧版本的,否则编译时报错,参考最后编译报错1
xz解压工具:一定要有否则编译报错,参考最后编译报错2
VPN:最好有一个,主要下载repo用,源码文件比较大总共大概33G还是用镜像地址比较好
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
进入到刚才创建的磁盘映像,创建WORKING_DIRECTORY源码目录,依次执行命令
$ cd /Volumes/AOSP
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
这里就需要考虑网络的问题的,国内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
$ repo sync
漫长的等待下载开始了,预计10M/s的网速预计需要一个半小时下载,好在repo同步时会检查是否已下载过,等于多了断点下载机制,不用担心下载中端,每次重新sync就行。这里如果出现错误,参考repo报错3
仍旧在下载源码目录下执行命令初始化编译环境
$ source build/envsetup.sh
选择要编译的cpu架构
$ lunch
然后会出现一个列表让选择,不知道怎么选直接按enter键,会自动选择一个默认的
$ make -j30
数字30代表使用的线程数量,前辈们经验CPU并发线程数的1~2倍,我8核的30线程比第一次编译时18线程快了很多,又是漫长的等待预计1~2小时吧
看到这个画面就大功告成了
$ emulator
试试能跑起来就ok。我没跑起来因为划分的150G提示空间不足,我只是需要源码,就没花时间再重试。
执行命令生成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创建的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'
原因:未安装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,按提示输入命令就行了
原因:不要怀疑!不要相信网上说的是git缓存区太小问题等等!就是你的网不行,找个网速好的地儿重新repo sync代码!
原因: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平级
原因:未安装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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。