Android源码编译环境

AOSP:Android Open Source Project
使用Linux 或 Mac OS,Windows下暂不支持。

选择分支

选择要编译的分支版本

创建Mac OS构建环境

默认安装下,Mac OS运行在大小写保留但大小写不敏感的文件系统上。

创建一个大小写敏感的磁盘映象
方法1:使用Mac OS下的“磁盘工具”

在Mac OS下,可以使用磁盘映象创建大小写敏感的文件系统。启动磁盘工具并选择“新建映象”创建映象。完成编译需要至少25GB。确保选择“区分大小写,日志式”作为卷格式。

方法2:使用shell命令

使用下面命令创建

# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg

上面的命令会生成一个.dmg(或.dmg.sparseimage文件),挂载该文件,就可以作为android源码编译环境。

使用下面命令扩容

# hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

android.dmg存储在home下,可以在~/.bash_profile中添加以下帮助函数。

执行mountAndroid挂载映象:

# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }

执行umountAndroid卸载映象:

# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }

安装JDK

Android不同版本对JDK的要求,参见Requirements

安装需求包
安装xcode
$ xcode-select --install
macports.org安装MacPorts

确保在你的路径中,/opt/local/bin出现在/usr/bin前。否则,在~/.bash_profile中添加如下内容:

export PATH=/opt/local/bin:$PATH
从MacPorts获取make, git, 和 GPG 包
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

如果是Mac OS X v10.4,安装bison:

$ POSIXLY_CORRECT=1 sudo port install bison
从make 3.82恢复

Android 4.0.x或更早的版本,在gmake 3.82中有一个bug阻止android构建。根据下面步骤使用MacPorts安装3.81:

编辑/opt/local/etc/macports/sources.conf,增加下面这行内容:
file:///Users/Shared/dports

然后创建这个目录:

$ mkdir /Users/Shared/dports
dports目录下,运行:
$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
为该新的本地库创建一个port index
$ portindex /Users/Shared/dports
安装老版本gmake
$ sudo port install gmake @3.81
设置文件描述符限制

为了提高上限,在~/.bash_profile中添加以下内容:

# set the number of open files to be 1024
ulimit -S -n 1024

下载源码

安装Repo

Repo是一个使Git在Android上下文环境中更容易工作的工具。Repo更多信息,参见Developing

确保在home下有bin/目录,并包含在你的路径中:

$ mkdir ~/bin
$ PATH=~/bin:$PATH

下载Repo工具并确保其可执行:

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

对于版本1.21,repo的SHA-1校验和:b8bd1804f432ecf1bab730949c82b93b0fc5fede
对于版本1.22,repo的SHA-1校验和:da0514e484f74648a890c0467d61ca415379f791
对于版本1.23,repo的SHA-1校验和:ac9d646f6d699f6822a6bc787d3e7338ae7ab6ed

初始化Repo客户端

安装Repo后,设置你的client访问Android源码repository。

创建一个空目录保存工作文件
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
配置git。为了使用Gerrit代码review工具,需要一个注册Google账户的邮件地址。
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
运行repo init获取Repo的最新版本。必须指定manifest的特定URL。
$ repo init -u https://android.googlesource.com/platform/manifest

为了检出branch而不是"master",指定-b分支列表

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

初始化成功,你的client目录会包含.repo目录。

下载Android源码树

从远程仓库拉取Android源码树到工作目录。

$ repo sync

For more about repo sync and other Repo commands, see the Developing section.
更多关于repo sync或其他Repo命令信息,参见Developing

用户认证

默认情况,访问Android源码是匿名的。为了防止对服务器的过度使用,每个IP地址一个限额。
当共享IP地址时,限额会触发一定的使用规则(如限制一定时间内的访问等)。
这种情况下,可以使用认证访问,其对每个用户使用独立的限额,而不顾IP地址。
第一步使用密钥生成器创建密钥并跟随其页面指示操作。
第二步强制认证访问,使用manifest URI:https://android.googlesource.com/a/platform/manifest
/a/路径前缀触发强制认证。下面的命令,转换已存在的client为使用强制认证:

$ repo init -u https://android.googlesource.com/a/platform/manifest

准备编译

如果你要编译Android6.0或更新版本,查看Compiling with Jack获取更多信息。

获取专用二进制文件

AOSP不能仅从纯代码中使用,也需要运行附加的硬件依赖库,例如硬件图形加速。有关其他资源的下载链接和设备二进制文件要求,请参阅以下部分。

下载专用二进制文件

你可以从Google's Nexus驱动程序界面 下载支持设备运行带AOSP版本分支标签的代码的官方二进制文件。这些二进制文件通过非开放源代码添加对附加硬件功能的访问。要改为构建AOSP主分支,请使用Nexus设备的二进制预览。在为设备构建主分支时,请使用最新编号版本或最近日期的二进制文件。

额外的专用库

每个二进制文件集合都作为在压缩归档中一个自解压脚本。解压缩每个归档,从源树根目录运行包含的自解压缩脚本,然后确认您同意所附许可协议的条款。二进制文件及其匹配的makefile将安装在源代码树的vendor/层级中。

清理

为了保证最新安装的二进制文件在解压后被正确应用,使用下面命令删除之前构建的输出:

$ make clobber
设置环境
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,379评论 25 709
  • Android 处理7.0以上的权限,有些东西会报空,比如打开相机黑屏,FileNotFund,打开处理资源之前先...
    XINHAO_HAN阅读 1,467评论 0 1
  • 春暖花开 燕飞蝶舞 简单的线稿 铺紫色和黄色打底,然后黑色分出亮色部分 加深局部,黄色有部分需要加深一个色 使出洪...
    秋日暖阳中的银杏叶阅读 629评论 4 14
  • 碧玺是彩宝界的新宠儿,吸引越来越多的投资者关注,价格每年都在上涨,是水晶中能量最强的,据说她的能量可以随温度而转化...
    哟Rita阅读 260评论 0 0
  • 兰收到信后,很伤心,哭了。视频中, “你的泪光柔弱中带伤惨白的月弯弯勾住过往夜太漫长凝结成了霜是谁在阁楼上冰冷地绝...
    阿信说阅读 251评论 0 1