为了能够同时开发iPhone应用程序和Android应用程序,我将所有的开发环境都集成到了自己的Macbook上,虽然用Macbook开发普通的Android应用程序没什么问题,但是你要是想用Eclipse浏览和编译Android源代码并且对其SDK进行调试,就是很麻烦的事情了。通过Google发现绝大部分Android源代码的编译和开发环境都是在Ubantu系统上,虽然Android官网提供了在MacOS X上编译源码的方式,但是尝试了多次总是发现有问题。

刚好这段时间Android源码网站被黑,终于找了一个方法能够下载到完整的代码,于是就借此机会再次尝试一下编译源码,同时在Eclipse里面调试成功,记录下来整个过程方便以后查阅。

一.设置MacOS X编译环境

这一点是根据Android官方网站提供的方法来设置的,我这里只做了一些翻译和解释工作。我自己的Macbook已经升级到了Lion,对于操作系统配置什么就不用去担心了。直接上吧。

1.创建一个大小写敏感的磁盘镜像文件

由于编译Android源代码需要将代码存放在大小写敏感的磁盘当中,所以我们需要首先创建一个大小写敏感的磁盘镜像文件(如果你的磁盘已经是大小写敏感的,则省略这个步骤,直接进入步骤2).

进入应用程序/实用工具/磁盘工具,选择文件->新建->新建空白映像:


其中名称可以随意,大小可以选择自定义30G,格式选用MacOs扩展(区分大小写),映像格式选择稀疏磁盘映像,这样文件的大小会随着文件的多少而增长,不用一上来就搞30G那么大,其它都是默认选项。

同时,你还可以通过命令行方式生成该磁盘镜像:

$hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 30g /path-to-image/AndroidDisk.sparseimage

生成的硬盘镜像文件名就是AndroidDisk.sparseimage了。似乎创建完以后OS会自动把这个镜像加载上去,挂载点是/Volumes/android,其中android就是上面我们为磁盘镜像设置的名称。

另外也可以将如下一行代码加入到~/.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之前,可以运行一下这行来确认:

$echo $PATH

否则,就将如下代码加入~/.profile当中。

export PATH=/opt/local/bin:$PATH

3)从MacPorts安装make,git, and GPG packages:

$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那行的上面一行加上:

file:///Users/Shared/dports

然后按照下面的步骤依次执行:

$mkdir /Users/Shared/dports

$cd /Users/Shared/dports/

$svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/devel/gmake/

$portindex /Users/Shared/dports

$ sudo port install gmake @3.81执行完成后,检查一下gmake的版本:

$gmake –version

GNUMake 3.81

5)修改文件标识符限制

于是最后下载Android源码前的最后一步就是,修改文件标识符限制:
由于MacOS默认将同时打开的文件标识符数量限制得太小,并行编译处理时可能会超出这个限制。所以在 ~/.profile里加上这么一段:

#set the number of open files to be 1024

ulimit -S -n 1024


二.下载gingerbread源代码

Android源代码网站android.git.kernel.org已经被黑了很长一段时间,后来在网上另外找到一网站提供源代码下载。

1.创建~/bin/目录

$mkdir ~/bin

$PATH=~/bin:$PATH

2.安装repo

$curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo

3.设置repo可执行权限

$chmoda +x ~/bin/repo

4.修改~/bin/repo文件将第五行

REPO_URL='https://code.google.com/p/git-repo/'

改为

REPO_URL='http://code.google.com/p/git-repo/'

5.新建目录gingerbread,并进入该目录

$mkdir android_gingerbread_src

$cd android_gingerbread_src

6.执行repoinit

$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

$repo sync

这一步需要很长时间,喝杯茶等吧。

三.编译gingerbread源代码

1)设置必要的编译环境

编译gingerbread首先需要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,即可通过编译。

初始化编译环境:

$source build/envsetup.sh

2)选择编译目标

$lunch full-eng

3)开始编译代码

$make

如果运气好的话,你可以看到最终成功的提示,goodluck!

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-10/45372p2.htm

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. 读取android手机流量信息
  4. android 使用html5作布局文件: webview跟javascript交互
  5. Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
  6. android“设置”里的版本号
  7. Android开发环境搭建
  8. Android(安卓)Resource介绍和使用
  9. 2014.01.21 ——— android 关联android-support源码

随机推荐

  1. Android(安卓)近百个项目的源代码,覆盖And
  2. 为android-support-v4.jar打包源码
  3. TextView添加Onclick点击无效没反应解决
  4. Delphi XE5 android 黑屏的临时解决办法
  5. Android(安卓)Intent 常见用法总结
  6. android中自定义Theme以及TitleBar
  7. Android中pm命令用法详解
  8. Android(安卓)拖拽
  9. Android(安卓)Wifi模块分析(二)
  10. drawable中的layer-list使用