在新air上折腾了两个礼拜,终于成功下载并且编译了android4.2的源码,个中辛苦不值一提,重要的是把经验分享给大家 :)
一. 下载源码
此处大家不必再绕弯路了,国内网络环境下现在可以畅通无阻的方法就在官网 http://source.android.com/source/downloading.html 。
我简要说明一下操作步骤:
1.安装repo
radio@mac:~ > mkdir ~/bin
radio@mac:~ > PATH=~/bin:$PATH
radio@mac:~ > curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
radio@mac:~ > chmod a+x ~/bin/repo
2.初始化repo
因为大部分人都是在路由器网络环境下工作,也就是与别人分享公网IP的情况,所以我推荐大家用官方推荐的第二种方法来初始化repo。
1)验证信息
访问the password generator ,需要登录google账号,然后按照提示操作,将最后出现的以下两行账户信息保存到~/.netrc中
machine android.googlesource.com login git-youremail.gmail.com password 1/ f1z7HE9tjl4Sql5Soh0hQdCqYVGKNKJOAKfA8ShLRS8
machine android-review.googlesource.com login git-youremail.gmail.com pass word 1/f1z7HE9tjl4Sql5Soh0hQdCqYVGKNKJOAKfA8ShLRS8
2)创建大小写敏感的磁盘
MAC的磁盘默认是不区分大小写的,而android编译需要在大小写敏感的磁盘中进行,不然会报各种错。。
可以通过磁盘工具创建一个大小写敏感的磁盘映像,创建过程此处略去。
挂载好刚创建完的映像后,cd 到此目录( radio@mac:~ > cd /Volumes/yourDiskName)
2)执行初始化
radio@mac:yourDiskName > repo init -u https://android.googlesource.com/a/platform/manifest
这样拉取的是master版本,也就是最新版,如果要指定版本请指定分支,如下
radio@mac:yourDiskName > repo init -u https://android.googlesource.com/a/platform/manifest -b android-4.2.1_r1
3.执行repo,下载代码
radio@mac:yourDiskName > repo sync
过程比较漫长,执行中也许会多次意外中断,懂点shell脚本的朋友们可以保存下面的脚本到repo.sh文件中,通过./repo.sh来执行
#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? = 1 ]; do
echo “======sync failed, re-sync again======”
sleep 3
repo sync
done
等待下载完毕。
注:在 http://d.zhu.im/Android/ 下载的4.2.2版本我没能成功编译emulator,master版本下emulator、sdk均能成功编译。
二.编译源码
1.从MacPorts安装make,git, and GPG packages:
radio@mac:~ > sudo port install gmake libsdl git-core gnupg
2.将gmake3.82还原到3.81
gmake3.82版本存在一个Bug,所以我们要将其还原为3.81版本。
radio@mac:~ > vi /opt/local/etc/macports/sources.conf
然后在rsync那行的上面一行加上:
file:///Users/Shared/dports
然后按照下面的步骤依次执行:
radio@mac:~ > mkdir /Users/Shared/dports
radio@mac:~ > cd /Users/Shared/dports/
radio@mac:~ > svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/devel/gmake/
radio@mac:~ > portindex /Users/Shared/dports
radio@mac:~ > sudo port install gmake @3.81
执行完成后,检查一下gmake的版本:
radio@mac:~ > gmake –version
radio@mac:~ > GNUMake 3.81
3.安装gcc
因为Xcode的Command Line Tools没有gcc只有llvm-gcc,使用后者不能成功编译emulator,这可是比较可悲的,通过brew可以安装上gcc
radio@mac:~ > brew tap homebrew/dupes
radio@mac:~ > brew install apple-gcc42
编辑 ~/.profile 加入下面这句话
export CC=/usr/local/bin/gcc-4.2
重启终端以生效。
4.执行编译
10.8.3的使用的xcode4.6,仅仅包含了maxos10.7sdk和maxos10.8sdk,编译前需要执行
radio@mac:~ >export BUILD_MAC_SDK_EXPERIMENTAL=1
注:不运行上面的命令则会使用10.6的sdk来编译,必然不能通过。
下面就是正常的编译命令了
radio@mac:~ > build/envsetup.sh
radio@mac:yourDiskName > lunch full-eng
radio@mac:yourDiskName > make -j4
一个进程要预留1G的内存,我的是4G内存低配的,如果是8G的机器可以make -j8 来加快编译速度。
等待编译结束。
注:如果要编译sdk,要重新运行lunch sdk-eng 然后再 make 。
展示一下我的emulator界面, :)

本文详细介绍了如何在Mac上下载并编译Android 4.2的源代码,包括设置repo工具、配置环境、解决依赖问题及最终的编译流程。

1万+

被折叠的 条评论
为什么被折叠?



