美文网首页
编译Android 源码

编译Android 源码

作者: 张利强 | 来源:发表于2016-04-12 19:47 被阅读460次

本文主要包含以下几个方面

  1. 创建Android源码的编译环境(Mac OS X)
  2. 下载Android源码
  3. 编译Android源码
  4. 将Android源码导入到Android Studio阅读

本文所依赖运行环境

  1. Mac OS X 10.11.2
  2. JDK 8
  3. Xcode 7.2

创建Android源码的编译环境(Mac OS X)

一、创立一个大小写敏感的磁盘镜像

因为Mac OS 文件管理系统对于文件名大小写特殊处理,我们需要建立一个大小写敏感的磁盘镜像
我们可以用Mac OS自带的磁盘工具软件,也可以使用命令行,在终端中敲入:

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

这样就在你的HOME目录下建立了一个名字为android.dmg或者android.dmg.sparseimage的文件。
如果你随后想调整该磁盘镜像的大小,可以使用以下命令:

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

现在,你已拥有一个在HOME目录下得android.dmg或者android.dmg.sparseimage文件。
所以你可以在你的~/.bash_profile中加入以下方法:
加载镜像:

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

卸载镜像:

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

二、安装必须的软件和包库

1.安装JDK

最近的Android版本(master分支)安装 jdk 8u45 或者更新的。所需jdk版本参考链接:https://source.android.com/source/requirements.html

2.必需的包
  1. 安装Xcode
  2. 安装MacPorts
  3. 通过MacPorts安装gmake、git 和GPG
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

如果使用Mac OS X v10.4,还需要

$ POSIXLY_CORRECT=1 sudo port install bison
3.设置文件描述符限制

在Mac OS,在同时进行的文件描述符数的缺省限制开太低,高度并行构建过程可能会超过此限制。
为了提高上限,添加以下行到你的〜/ .bash_profile中:

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

下载Android源码

一、安装Repo

1.确保拥有~/bin目录
$ mkdir ~/bin
$ PATH=~/bin:$PATH
2.下载Repo工具并确保他是可执行的
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

二、安装一个Repo Client

1.建立代码要下载到的目录:

在第一项内容中我们已经建立了一个区分大小写的磁盘镜像,加载之,然后在里面执行:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
2.设置您的Git账户:
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
3.执行repo init ,你必须指定一个mainfest的URL,这将决定接下来下载的版本。
$ repo init -u https://android.googlesource.com/platform/manifest

如果需要下载一个master之外的分支,通过-b 指定。所有分支的列表: Source Code Tags and Builds

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

执行完成会看到相应提示,这时Repo客户端的目录下将会包含.repo 目录。

三、开始下载代码

$ repo sync

取决于你的网速。这将会花费一个小时或者更多时间才能下载完。

编译Android源码

设置环境

$ source build/envsetup.sh

或者

$ . build/envsetup.sh

选择一个编译的目标

$ lunch aosp_arm-eng
Buildtype Use
user limited access; suited for production
userdebug like "user" but with root access and debuggability; preferred for debugging
eng development configuration with additional debugging tools

编译源码

$ make -j4

编译过程中遇到的问题
据说人品好的可以一次编译通过,但是我在其中遇到了几个问题:
1.内存移除 给出的提示是:GC overhead limit exceeded Try increasing heap size with java option '-Xmx<size>'
于是我根据提示增加了分配内存:

export JVM_ARGS="-Xmx4096m -XX:MaxPermSize=1024m"

之后再次运行,编译一段时间后依然OOM报错:
于是我再次增加了内存:

export JVM_ARGS="-Xmx6144m -XX:MaxPermSize=2048m"

运行一段时间依然报错...只能求助Google:得一文:http://www.cnblogs.com/hucn/p/3572384.html
将设置改为:

export JVM_ARGS="-Xmx6144m -XX:-UseGCOverheadLimit"

重新编译,然后虽得到无数Warning,漫长等待后还是编译通过了。

将Android源码导入到Android Studio阅读

请参考工匠若水的博客,写的很详细:
使用Android Studio导入源码

参考链接

Android 源码官网
OS X 10.11下载和编译Android6.0源码
Mac OSX 10.11 EI 编译 Android 6.0 Marshmallow 源码
在Mac 10.11中编译Android 6.0源码
Android Open Source Project Site

相关文章

网友评论

      本文标题:编译Android 源码

      本文链接:https://www.haomeiwen.com/subject/tmrwlttx.html