为了能够同时开发iPhone应用程序和Android应用程序,我将所有开发环境集成到我的Macbook中。 虽然用 Macbook 开发普通的 Android 应用是没有问题的,但是如果想要使用 Eclipse 来浏览和编译 Android 的话,阅读源码和调试它的 SDK 就非常麻烦了。 通过Google,我发现大部分Android源码的编译和开发环境都在Ubantu系统上。 虽然Android官网提供了在MacOS X上编译源代码的方法android编译源码运行,但我尝试了很多次,总是发现问题。
正好这段时间Android源码网站被黑了android编译源码运行,终于找到了下载完整代码的方法,于是趁着这个机会再次尝试编译源码,同时在Eclipse上调试成功,并将整个过程记录下来,方便以后参考。
1.搭建MacOS X编译环境
这个点是按照Android官网提供的方法设置的,这里我只做了一些翻译和解释工作。 我自己的Macbook已经升级到Lion了,所以不用担心操作系统配置的问题。 径直向上走。
1、创建区分大小写的C盘镜像文件
因为编译Android源代码需要将代码存储在区分大小写的C盘中,所以我们需要先创建一个区分大小写的磁盘镜像文件(如果你的C盘已经区分大小写,则省略此步骤,直接进入步骤2)。
转到“应用程序/实用程序/磁盘实用程序”,选择“文件”->“新建”->“新建空白映像”:
其中名称可以任意,大小可自定义30G,格式为MacOs扩展(区分大小写),镜像格式为稀疏c盘镜像,这样文件大小会随着文件数量的增加而减小。 大,其他都是默认选项。
同时也可以通过命令行生成C盘镜像:
$hdiutil create -type SPARSE -fs '区分大小写的日志式 HFS+' -size 30g /path-to-image/AndroidDisk.sparseimage
生成的硬盘镜像文件名为AndroidDisk.sparseimage。 看来创建之后,操作系统会手动加载镜像。 挂载点为/Volumes/android,其中android是我们为c盘镜像设置的名称。
另外,你还可以在~/.profile中添加如下代码: function mountAndroid { hdiutil Attach /path-to-image/AndroidDisk.sparseimage -mountpoint /Volumes/android; 之后,每次都可以使用mountAndroid命令。
2.安装所需的包
1)首先需要安装的是Xcode。 由于我的机器本身就是用来开发iPhone应用程序的,所以我的Xcode是最新版本的。 如果你没有Xcode,可以去苹果官网注册一个appleid,然后就可以免费下载最新的Xcode工具和MacOS SDK。
2) 从 macports.org 安装 MacPorts 工具
在安装MacPorts之前,您需要确认在环境变量PATH中,/opt/local/bin出现在/usr/bin之前,您可以运行此行来确认:
$回显$PATH
否则,将以下代码添加到 ~/.profile。
导出 PATH=/opt/local/bin:$PATH
3) 从 MacPorts 安装 make、git 和 GPG 软件包:
$POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
4) 将 gmake3.82 恢复为 3.81
gmake3.82版本存在bug,需要恢复到3.81版本。
$ sudo vim /opt/local/etc/macports/sources.conf
然后在 rsync 行之前添加以下行:
文件:///用户/共享/dports
然后按顺序执行以下步骤:
$ mkdir /用户/共享/dports
$cd /用户/共享/dports/
$ svn co --修订版 50980
$portindex /用户/共享/dports
$ sudo port install gmake @3.81 执行完成后,查看gmake的版本:
$ gmake –版本
GNUMake 3.81
5)修改文件标识符限制
所以下载Android源码之前的最后一步就是修改文件标识符限制:
由于MacOS默认将同时打开的文件标识符的数量限制为较小的数量,因此并行编译处理可能会超出此限制。 所以在~/.profile中添加这样一段:
#设置打开文件数为1024
ulimit -S -n 1024
2.下载姜饼源码
Android源码网站android.git.kernel.org已经被黑很久了,后来又在网上找到了另一个提供源码下载的网站。
1.创建~/bin/目录
$ mkdir ~/bin
$PATH=~/bin:$PATH
2.安装仓库
$curl > ~/bin/repo
3.设置repo可执行权限
$chmoda +x ~/bin/repo
4、修改~/bin/repo文件第五行
REPO_URL='#39;
变成
REPO_URL='#39;
5.新建目录gingerbread,并进入该目录
$ mkdir android_gingerbread_src
$ cd android_gingerbread_src
6.执行repointit
$repo init -u git://android.git.linaro.org/platform/manifest.git -bgingerbread
7. 在android_gingerbread_src目录下的.repo下找到manifest.xml文件。 该文件只是一个链接。 它实际上是manifest目录下的default.xml文件。
fetch="git://Android.git.kernel.org/"
变成
fetch="git://Android.git.linaro.org/"
8.回到android_gingerbread_src目录,执行reposync
$ 回购同步
这一步会花很长时间,喝杯茶等待吧。
3.编译姜饼源码
1)搭建必要的编译环境
首先编译姜饼需要jdk1.6版本,但是Mac已经自带了,所以这一步就省略了。
其次,gingerbread的编译也依赖MacOSX10.5.sdk,但是我安装了最新版本的Xcode后,仍然编译失败。 后来看了一下编译脚本配置文件external/qemu/Makefile.Android,其中第72行,LEOPARD_SDK:= /Developer/SDKs/MacOSX10.5.sdk,修改为:
LEOPARD_SDK:= /Developer/SDKs/MacOSX10.6.sdk,即可编译通过。
初始化编译环境:
$源构建/envsetup.sh
2)选择编译目标
$全英文午餐
3)开始编译代码
$make
如果幸运的话,你可以听到最终成功的提示,goodluck!