MAC OS X 10.8.3 环境下成功下载和编译android 4.2.2 源码 (master版本)

来源:互联网 发布:淘宝上怎么注册开店 编辑:程序博客网 时间:2024/06/08 06:35

在新air上折腾了两个礼拜,终于成功下载并且编译了android4.2的源码,个中辛苦不值一提,重要的是把经验分享给大家 :)

一. 下载源码

此处大家不必再绕弯路了,国内网络环境下现在可以畅通无阻的方法就在官网 http://source.android.com/source/downloading.html 。

我简要说明一下操作步骤:

1.安装repo

radio@mac:~ > mkdir ~/binradio@mac:~ > PATH=~/bin:$PATHradio@mac:~ > curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/reporadio@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/bashecho "======start repo sync======"repo syncwhile [ $? = 1 ]; doecho “======sync failed, re-sync again======”sleep 3repo syncdone


等待下载完毕。

注:在 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/dportsradio@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/dportsradio@mac:~ > sudo port install gmake @3.81

执行完成后,检查一下gmake的版本:

radio@mac:~ > gmake –versionradio@mac:~ > GNUMake 3.81


3.安装gcc

因为Xcode的Command Line Tools没有gcc只有llvm-gcc,使用后者不能成功编译emulator,这可是比较可悲的,通过brew可以安装上gcc

radio@mac:~ > brew tap homebrew/dupesradio@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.shradio@mac:yourDiskName > lunch full-engradio@mac:yourDiskName > make -j4

一个进程要预留1G的内存,我的是4G内存低配的,如果是8G的机器可以make -j8 来加快编译速度。

等待编译结束。

注:如果要编译sdk,要重新运行lunch sdk-eng 然后再 make 。

展示一下我的emulator界面, :)


原创粉丝点击