美文网首页
编译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